Java Socket服务端客户端通信实例

1. Socket是啥

实际上是Java为TCP通信封装的模型对象。

TCP通信有服务端和客户端之分,Java语言为此提供了ServerSocket和Socket类。

2. 运行机制

服务端运行在一个机器的某个端口上,等待客户端来访问。

客户端向指定IP的机器的指定端口发起访问。

当服务端接收到客户端的访问请求时,会建立一个Socket来代表该客户端,通过该Socket进行输入输出操作。

客户端与服务端建立连接后,也会有一个Socket,用于输入输出操作。

3. 代码示例

首先建立一个服务端,在10000端口等待客户端连接。

/**
 * Hello服务端
 */
public class HelloServerSocket {
	public static void main(String[] args) throws IOException {
		// 服务端Socket
		ServerSocket serverSocket = new ServerSocket(10000);
		// 一直运行,等待客户端请求
		while (true) {
			// 每当收到客户端请求,则生成一个对应的客户端Socket
			Socket socket = serverSocket.accept();
			// 对客户端输出Hello
			PrintStream stream = new PrintStream(socket.getOutputStream());
			stream.print("Hello");
			// 关闭输出流和客户端
			stream.close();
			socket.close();
		}
	}
}

然后通过客户端发起访问请求:

/**
 * Hello客户端
 */
public class HelloClientSocket {
	public static void main(String[] args) throws UnknownHostException, IOException {
		// 指定服务端IP和端口
		Socket socket = new Socket("127.0.0.1", 10000);
		// 获取输入流,此处包装了下,通过BufferedReader读取服务端输入内容
		BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
		String line = null;
		while ((line = reader.readLine()) != null) {
			System.out.println("来自服务端的问候:" + line);
		}
	}
}

4. 测试

先运行服务端,然后运行客户端,每次运行客户端控制台会打印:

来自服务端的问候:Hello

5. 小结

这是一个最简单的Socket通信程序了,可以发现Java的封装还是比较到位的。

你可能感兴趣的:(Java----网络&多线程)