`

简单的服务器与客户端程序

 
阅读更多
服务器端程序

EchoServer.java代码如下:
package com.network.test;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * 本例子是由服务器程序与客户端程序组成
 * 服务器程序一直监听本地8000端口,客户程序连接上本地8000端口,
 * 客户端向socket里面发送数据,并读取服务端返回的数据
 * 服务端读取socket里面的数据,并将数据处理后写入socket里面
 * @author yangjianzhou
 *
 */
public class EchoServer {
	public static void main(String[] args) throws Exception{
		new EchoServer().service();
	}

	private int port = 8000;
	private ServerSocket serverSocket;

	public EchoServer()throws Exception{
		serverSocket = new ServerSocket(port);
		System.out.println("服务器启动!");
	}

	public String echo(String msg){
		return "echo : "+msg;
	}

	private PrintWriter getWriter(Socket socket) throws Exception{
		OutputStream socketOut = socket.getOutputStream();
		return new PrintWriter(socketOut,true);
	}

	private BufferedReader getReader(Socket socket)throws Exception{
		InputStream socketIn = socket.getInputStream();
		return new BufferedReader(new InputStreamReader(socketIn));
	}

	public void service(){
		while(true){
			Socket socket = null;
			try{
				socket = serverSocket.accept();
				System.out.println("New connection accepted "+socket.getInetAddress()+":"+socket.getPort());
				BufferedReader br = getReader(socket);
				PrintWriter pw = getWriter(socket);

				String msg = null;
				while((msg=br.readLine())!=null){
					System.out.println(msg);
					pw.println(echo(msg));
					if(msg.equals("bye")){
						break;
					}
				}
			}catch (Exception e) {
				e.printStackTrace();
			}finally{
				try{
					if(socket!=null)
						socket.close();
				}catch (Exception e) {
					e.printStackTrace();
				}
			}
		}
	}
}



客户端程序:

EchoClient.java代码如下:
  package com.network.test;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket;

public class EchoClient {
	
	private String host = "localhost";
	private int port = 8000;
	private Socket socket;
	
	public static void main(String[] args) throws Exception{
		new EchoClient().talk();
	}
	
	public EchoClient() throws Exception{
		socket = new Socket(host,port);
	}
	
	private PrintWriter getWriter(Socket socket) throws Exception{
		OutputStream socketOut = socket.getOutputStream();
		return new PrintWriter(socketOut,true);
	}

	private BufferedReader getReader(Socket socket)throws Exception{
		InputStream socketIn = socket.getInputStream();
		return new BufferedReader(new InputStreamReader(socketIn));
	}
	
	public void talk() throws Exception{
		try{
			BufferedReader br = getReader(socket);
			PrintWriter pw = getWriter(socket);
			BufferedReader localReader = new BufferedReader(new InputStreamReader(System.in));
			String msg = null;
			while((msg = localReader.readLine())!=null){
				pw.println(msg);
				System.out.println(br.readLine());
				if(msg.equals("bye")){
					break;
				}
			}
		}catch (Exception e) {
			e.printStackTrace();
		}finally{
			try{
				if(socket!=null){
					socket.close();
				}
			}catch (Exception e) {
				e.printStackTrace();
			}
		}
	}
}



运行结果如下:
服务器端:
 服务器启动!
New connection accepted /127.0.0.1:55726
yangjianzhou
bye


客户端:
yangjianzhou
echo : yangjianzhou
bye
echo : bye

分享到:
评论

相关推荐

    FTP服务器与客户端程序(c++)

    在这个FTP服务器与客户端程序的项目中,我们主要关注两个核心组件:FTP服务器和FTP客户端。这两个组件通常由C++编程语言实现,因为C++提供了丰富的库支持和高效性能。 FTP服务器端: FTP服务器是网络上的一个服务,...

    Ftp服务器端客户端程序

    FTP客户端程序则是用户与FTP服务器交互的工具。在VC中创建的FTP客户端程序通常包括以下组件:连接模块,用于建立与服务器的TCP连接;命令发送模块,用于发送FTP命令并解析响应;数据传输模块,用于执行文件上传和...

    FTP 服务器和客户端程序

    本篇将深入探讨FTP服务器和客户端程序的工作原理、配置及应用。 一、FTP服务器 FTP服务器是提供文件存储和访问服务的软件,它监听特定的网络端口(默认21),等待客户端的连接请求。当客户端连接到服务器后,服务器...

    简单的服务器与客户端的程序

    本项目“简单的服务器与客户端的程序”旨在教你如何使用VC6.0这个经典的开发环境来实现基于Socket的通信。通过理解并实践这个项目,你将深入掌握Socket编程的基本原理及其在服务器与客户端交互中的应用。 首先,让...

    Qt:Tcp服务器与客户端程序

    本项目“Qt:Tcp服务器与客户端程序”聚焦于利用Qt库来实现TCP(传输控制协议)通信。TCP是一种面向连接的、可靠的网络通信协议,它确保数据的正确排序和无丢失传输。 在描述中提到,该程序能够“建立TCP服务器后,...

    Delphi编写soap服务器与客户端程序[收集].pdf

    Delphi编写soap服务器与客户端程序 在Delphi中编写soap服务器与客户端程序是比较常见的需求,以下是从标题、描述、标签和部分内容中生成的相关知识点: 一、SOAP服务器的建立 在Delphi中,建立SOAP服务器可以通过...

    Delphi编写soap服务器与客户端程序

    "Delphi 编写 SOAP 服务器与客户端程序" 在本文中,我们将详细介绍使用 Delphi 编写 SOAP 服务器与客户端程序的过程。SOAP(Simple Object Access Protocol)是一种基于 XML 的协议,用于在不同平台之间交换结构化...

    c/c++服务器与客户端程序

    本项目“c/c++服务器与客户端程序”显然关注的是如何使用C/C++编程语言实现基于TCP的socket通信。 首先,我们要理解TCP协议的工作原理。TCP是一种面向连接的协议,它在数据传输前先建立连接,确保数据能够按照顺序...

    用Socket套接字实现DAYTIME协议的服务器和客户端程序.doc

    DAYTIME 协议服务器和客户端程序使用 Socket 套接字实现 知识点 1:DAYTIME 协议的定义和应用 * DAYTIME 协议是一种简单的网络协议,用于获取服务器的当前时间 *DAYTIME 协议通常使用 TCP 或 UDP 协议进行数据传输...

    FTP 服务器与客户端程序

    随着宽带网的普及,自己架设FTP服务器进行文件交流的用户越来越多。一提到FTP服务器软件,一般用户首先想到的是大名鼎鼎的Serv-U。使用主流 FTP Server存在一个问题:...支持远程配置管理…… 安装和设置也比较简单。

    Labview TCP服务器对多客户端程序

    Labview TCP服务器对多客户端程序是一个使用LabVIEW(Laboratory Virtual Instrument Engineering Workbench)开发的交互式应用程序,它展示了如何构建一个TCP服务器来处理多个同时连接的客户端。LabVIEW是美国国家...

    echo服务器和客户端程序

    客户端程序则是与echo服务器交互的应用,用户可以在命令行中输入任意字符串,按下回车键后,这些字符会被封装成数据包并发送到服务器。这里特别提到“发送的部分要包括换行符”,因为换行符在文本数据中扮演着分隔...

    多线程服务器、客户端程序

    总的来说,构建多线程服务器和客户端程序涉及到Windows API的深入理解和灵活运用,以及对网络编程和多线程模型的深刻认识。通过这样的实践,开发者能够提升在并发环境下的编程能力,为构建高效、稳定的企业级应用...

    简单的服务器、客户端程序-即时聊天程序实验报告

    实验报告“简单的服务器、客户端程序-即时聊天程序”主要涵盖了计算机网络中的基本概念和技术,包括服务器、客户端模型、TCP和UDP协议以及套接字编程。以下是相关知识点的详细说明: 1. **服务器与客户端模型**: ...

    多线程服务器、客户端程序(MFC)

    在IT领域,多线程服务器和客户端程序是网络编程中的重要组成部分,特别是在使用MFC(Microsoft Foundation Classes)框架的VC++环境中。MFC是微软提供的一套C++库,用于简化Windows应用程序的开发,它提供了丰富的类...

    基于TCP服务器和客户端程序设计

    "基于TCP服务器和客户端程序设计" 本文将详细介绍基于TCP服务器和客户端程序设计的知识点,涵盖了服务器完整程序设计、ECHO服务器的工作原理、TCP服务器和客户端的交互机制等方面。 服务器完整程序设计 在开始...

    服务器与客户端连接测试

    两个EXE程序,分别为服务器与客户端程序,客户程序输入服务器程序的IP地址与端口即可连接到客户端

    纯C语言实现DNS服务端与客户端程序

    在本文中,我们将深入探讨如何使用纯C语言实现DNS(Domain Name System)服务端与客户端程序。DNS是互联网上的一个关键组件,它负责将人类可读的域名转换为机器可识别的IP地址。通过理解并编写这样的程序,我们可以...

    服务器与客户端的简单例子1

    本示例"服务器与客户端的简单例子1"提供了一个基于 Indy(Internet Direct) 库的简单TCP通信模型,用于演示如何使用 `IdTCPServer` 和 `IdTCPClient` 组件进行数据传输。下面我们将详细探讨这两个组件以及它们在...

    一个简单的FTP服务器和客户端

    "一个简单的FTP程序"这个压缩包可能包含了一个基本的FTP服务器和客户端的源代码示例,通过阅读和理解这些代码,可以更好地学习和掌握socket编程和FTP协议的实现。 总结,通过socket编程在Unix/Linux系统上实现FTP...

Global site tag (gtag.js) - Google Analytics