先写一个客户端输入数据,服务器端处理数据后返回给客户端
客户端:
public static void main(String[] args) throws UnknownHostException, IOException {
Scanner sc = new Scanner(System.in);
System.out.println("请客户端输入:");
String msg = sc.nextLine();
//创建客户端 指定服务器及端口 此时就在连接
Socket client = new Socket("localhost",9999);
//客户端输出数据 输出流
DataOutputStream dos = new DataOutputStream(client.getOutputStream());
dos.writeUTF(msg);
dos.flush();
//客户端读取数据, 输入流
DataInputStream dis = new DataInputStream(client.getInputStream());
msg = dis.readUTF();
System.out.println(msg);
}
服务器端:
public static void main(String[] args) throws IOException {
//创建服务器,指定端口
ServerSocket server = new ServerSocket(9999);
//接收客户端连接 阻塞式 该socket和客户端的socket是同一个socket
Socket socket = server.accept();
//服务器端读取数据, 输入流
DataInputStream dis = new DataInputStream(socket.getInputStream());
String msg = dis.readUTF();
//服务器端输出数据 输出流
DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
dos.writeUTF(msg + " 服务器端输出");
dos.flush();
}
启动服务器端后启动客户端:
请客户端输入:
你好
你好 服务器端输出
上述代码存在的问题,处理完一条数据就结束了,要想实现一直保持通信,加入死循环。输入流和输出流在同一个线程内 应该独立处理 彼此独立 引入多线程
服务器端:
public class ThreadServer {
public static void main(String[] args) throws IOException {
//创建服务器,指定端口
ServerSocket server = new Server