serverMain
package com.cy.java.net;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class serverMain {
public static void main(String[] args) throws IOException {
//开启监听,设置监听端口号9999
ServerSocket serverSocket = new ServerSocket(9999);
System.out.println("开启监听");
while (true){ //不断等待客户的连接
//接受到客户端请求时会向下执行
Socket accept = serverSocket.accept();
System.out.println("监听到client");
//通过流读取客户端发来的请求
ObjectInputStream objectInputStream = new ObjectInputStream(socket.getInputStream());
System.out.println("client say:"+objectInputStream.readUTF());
}
}
}
TCP服务器端依次调用socket()、bind()、listen()之后,就会监听指定的socket地址了。
TCP服务器监听到请求之后,就会调用accept()函数取接收请求,这样连接就建立好了。之后就可以开始网络I/O操作了,即类同于普通文件的读写I/O操作。
clientMain
package com.cy.java.net;
import java.io.IOException;
import java.net.Socket;
public class client {
public static void main(String[] args) throws IOException {
//与端口为9999,ip为127.0.0.1(本地)的服务器建立连接
Socket socket = new Socket("127.0.0.1", 9999);
//通过写入流对服务端传输数据
ObjectOutputStream objectOutputStream = new ObjectOutputStream(socket.getOutputStream());
objectOutputStream.writeUTF("hello server");
objectOutputStream.flush();
objectOutputStream.close();
}
}
TCP客户端依次调用socket()、connect()之后就向TCP服务器发送了一个连接请求。
开启服务器后,执行两次客户端请求,执行结果如下: