对于Java Socket编程而言,有两个概念,一个是ServerSocket,一个是Socket。服务端和客户端之间通过Socket建立连接,之后它们就可以进行通信了。首先ServerSocket将在服务端监听某个端口,当发现客户端有Socket来试图连接它时,它会accept该Socket的连接请求,同时在服务端建立一个对应的Socket与之进行通信。这样就有两个Socket了,客户端和服务端各一个。
客户端写服务端读
服务端代码
- public class Server {
- public static void main(String args[]) throws IOException {
- //为了简单起见,所有的异常信息都往外抛
- int port = 8899;
- //定义一个ServerSocket监听在端口8899上
- ServerSocket server = new ServerSocket(port);
- //server尝试接收其他Socket的连接请求,server的accept方法是阻塞式的
- Socket socket = server.accept();
- //跟客户端建立好连接之后,我们就可以获取socket的InputStream,并从中读取客户端发过来的信息了。
- Reader reader = new InputStreamReader(socket.getInputStream());
- char chars[] = new char[64];
- int len;
- StringBuilder sb = new StringBuilder();
- while ((len=reader.read(chars)) != -1) {
- sb.append(new String(chars, 0, len));
- }
- System.out.println("from client: " + sb);
- reader.close();
- socket.close();
- server.close();
- }
- }
客户端代码
- public class Client {
- public static void main(String args[]) throws Exception {
- //为了简单起见,所有的异常都直接往外抛
- String host = "127.0.0.1"; //要连接的服务端IP地址
- int port = 8899; //要连接的服务端对应的监听端口
- //与服务端建立连接
- Socket client = new Socket(host, port);
- //建立连接后就可以往服务端写数据了
- Writer writer = new OutputStreamWriter(client.getOutputStream());
- writer.write("Hello Server.");
- writer.flush();//写完后要记得flush
- writer.close();
- client.close();
- }
- }
时间: 2024-10-18 17:57:52