TCP多收多发

TCP多收多发

客户端代码:

public class ClientDemo {
    public static void main(String[] args) throws IOException {
        // 创建一个Socket对象
        Socket socket = new Socket("127.0.0.1", 10000);

        // 获取一个IO流开始写数据
        OutputStream os = socket.getOutputStream();

		// 把低级的字节输出流包装称数据输出流
		DataOutputStream dos = new DataOutputStream(os);

		Scanner sc = new Scanner(System.in);
		while(true) {
			System.out.println("请说:");
			String msg = sc.nextLine();


			//exit退出程序
			if("exit".equals(msg)) {
				System.out.println("退出成功");
				dos.close();
				socket.close();
				break;
			}
			// 开始写数据
	        dos.writeUTF("Hello, server");
	        dos.flush();
		}

        // 释放资源
        dos.close();
        socket.close();
    }
}

服务端代码

public class ServerDemo {
    public static void main(String[] args) throws IOException {
        // 创建ServerSocket对象
        ServerSocket ss = new ServerSocket(10000);
        // 调用accept等待客户端连接
        Socket accept = ss.accept();
        // 获取输入流对象
        InputStream is = accept.getInputStream();

		// 把原始的字节输入流包装称数据输入流
		DataInputStream dis = new DataInputStream(is);

		while(true) {
			try {
				// 使用数据输入流读取客户端发送过来的消息
				String rs = dis.readUTF();
				System.out.println(rs);
				
		        // 获取客户端的IP地址
		        System.out.println(accept.getRemoteSocketAddress());
			} catch(Exception e) {
				System.out.println(socket.getRemoteSocketAddress() + "离线了");
				socket.close();
				break;
			}
		}
    }
}