Java 实例 - ServerSocket 和 Socket 通信实例
以下实例演示了如何实现客户端发送消息到服务器,服务器接收到消息并读取输出,然后写出到客户端客户端接收到输出。
1、建立服务器端
- 服务器建立通信ServerSocket
- 服务器建立Socket接收客户端连接
- 建立IO输入流读取客户端发送的数据
- 建立IO输出流向客户端发送数据消息
服务器端代码:
Server.java 文件
importjava.io.BufferedReader;
importjava.io.BufferedWriter;
importjava.io.IOException;
importjava.io.InputStreamReader;
importjava.io.OutputStreamWriter;
importjava.net.ServerSocket;
importjava.net.Socket;
publicclassServer{publicstaticvoidmain(String[]args){try{ServerSocketss = newServerSocket(8888);
System.out.println("启动服务器....");
Sockets = ss.accept();
System.out.println("客户端:"+s.getInetAddress().getLocalHost()+"已连接到服务器");
BufferedReaderbr = newBufferedReader(newInputStreamReader(s.getInputStream()));
//读取客户端发送来的消息Stringmess = br.readLine();
System.out.println("客户端:"+mess);
BufferedWriterbw = newBufferedWriter(newOutputStreamWriter(s.getOutputStream()));
bw.write(mess+"\n");
bw.flush();
}catch(IOExceptione){e.printStackTrace();
}}}
以上代码运行输出结果为:
启动服务器....
2、建立客户端
- 创建Socket通信,设置通信服务器的IP和Port
- 建立IO输出流向服务器发送数据消息
- 建立IO输入流读取服务器发送来的数据消息
客户端代码:
Client.java 文件
importjava.io.BufferedReader;
importjava.io.BufferedWriter;
importjava.io.IOException;
importjava.io.InputStream;
importjava.io.InputStreamReader;
importjava.io.OutputStream;
importjava.io.OutputStreamWriter;
importjava.net.Socket;
importjava.net.UnknownHostException;
publicclassClient{publicstaticvoidmain(String[]args){try{Sockets = newSocket("127.0.0.1",8888);
//构建IOInputStreamis = s.getInputStream();
OutputStreamos = s.getOutputStream();
BufferedWriterbw = newBufferedWriter(newOutputStreamWriter(os));
//向服务器端发送一条消息bw.write("测试客户端和服务器通信,服务器接收到消息返回到客户端\n");
bw.flush();
//读取服务器返回的消息BufferedReaderbr = newBufferedReader(newInputStreamReader(is));
Stringmess = br.readLine();
System.out.println("服务器:"+mess);
}catch(UnknownHostExceptione){e.printStackTrace();
}catch(IOExceptione){e.printStackTrace();
}}}
以上代码运行输出结果为:
服务器:测试客户端和服务器通信,服务器接收到消息返回到客户端