1. Socket是啥
实际上是Java为TCP通信封装的模型对象。
TCP通信有服务端和客户端之分,Java语言为此提供了ServerSocket和Socket类。
2. 运行机制
服务端运行在一个机器的某个端口上,等待客户端来访问。
客户端向指定IP的机器的指定端口发起访问。
当服务端接收到客户端的访问请求时,会建立一个Socket来代表该客户端,通过该Socket进行输入输出操作。
客户端与服务端建立连接后,也会有一个Socket,用于输入输出操作。
3. 代码示例
首先建立一个服务端,在10000端口等待客户端连接。
/** * Hello服务端 */ public class HelloServerSocket { public static void main(String[] args) throws IOException { // 服务端Socket ServerSocket serverSocket = new ServerSocket(10000); // 一直运行,等待客户端请求 while (true) { // 每当收到客户端请求,则生成一个对应的客户端Socket Socket socket = serverSocket.accept(); // 对客户端输出Hello PrintStream stream = new PrintStream(socket.getOutputStream()); stream.print("Hello"); // 关闭输出流和客户端 stream.close(); socket.close(); } } } 然后通过客户端发起访问请求: /** * Hello客户端 */ public class HelloClientSocket { public static void main(String[] args) throws UnknownHostException, IOException { // 指定服务端IP和端口 Socket socket = new Socket("127.0.0.1", 10000); // 获取输入流,此处包装了下,通过BufferedReader读取服务端输入内容 BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream())); String line = null; while ((line = reader.readLine()) != null) { System.out.println("来自服务端的问候:" + line); } } } 4. 测试 先运行服务端,然后运行客户端,每次运行客户端控制台会打印: 来自服务端的问候:Hello 1 5. 小结 这是一个最简单的Socket通信程序了,可以发现Java的封装还是比较到位的。