Java Socket通信协议

概述

Socket通信是一种基于网络的进程间通信方式,它允许不同的计算机上的进程通过网络进行通信。Java提供了Socket和ServerSocket类来实现Socket通信协议。

在Socket通信中,有两种角色:客户端和服务器。客户端发起连接请求,而服务器监听并接受连接请求。一旦建立连接,双方可以通过输入流和输出流进行数据的传输。

Socket类

在Java中,Socket类用于创建一个客户端Socket。通过指定目标服务器的IP地址和端口号,可以建立与服务器的连接。

下面是一个简单的Socket客户端代码示例:

import java.io.*;
import java.net.*;

public class Client {
    public static void main(String[] args) {
        try {
            // 创建Socket对象,指定服务器IP地址和端口号
            Socket socket = new Socket("127.0.0.1", 8888);
            
            // 获取输出流,用于向服务器发送数据
            OutputStream outputStream = socket.getOutputStream();
            PrintWriter printWriter = new PrintWriter(outputStream);
            printWriter.println("Hello, Server!");
            printWriter.flush();
            
            // 获取输入流,用于接收服务器返回的数据
            InputStream inputStream = socket.getInputStream();
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
            String response = bufferedReader.readLine();
            System.out.println("服务器返回的数据:" + response);
            
            // 关闭资源
            bufferedReader.close();
            inputStream.close();
            printWriter.close();
            outputStream.close();
            socket.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

ServerSocket类

ServerSocket类用于创建一个服务器端Socket。服务器端需要在指定的端口上监听客户端的连接请求,并接受连接。

下面是一个简单的Socket服务器代码示例:

import java.io.*;
import java.net.*;

public class Server {
    public static void main(String[] args) {
        try {
            // 创建ServerSocket对象,指定端口号
            ServerSocket serverSocket = new ServerSocket(8888);
            System.out.println("服务器已启动,等待客户端连接...");
            
            // 监听客户端连接请求
            Socket socket = serverSocket.accept();
            System.out.println("客户端已连接,IP地址:" + socket.getInetAddress().getHostAddress());
            
            // 获取输入流,用于接收客户端发送的数据
            InputStream inputStream = socket.getInputStream();
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
            String request = bufferedReader.readLine();
            System.out.println("客户端发送的数据:" + request);
            
            // 获取输出流,用于向客户端发送数据
            OutputStream outputStream = socket.getOutputStream();
            PrintWriter printWriter = new PrintWriter(outputStream);
            printWriter.println("Hello, Client!");
            printWriter.flush();
            
            // 关闭资源
            printWriter.close();
            outputStream.close();
            bufferedReader.close();
            inputStream.close();
            socket.close();
            serverSocket.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

TCP协议

Socket通信使用的是TCP协议(传输控制协议)。TCP是一种可靠的、面向连接的协议,它提供了可靠的数据传输、流量控制和拥塞控制等功能。

TCP协议通过建立连接、传输数据和断开连接三个步骤实现数据的可靠传输。客户端发送连接请求,服务器接受请求并返回确认信息,然后双方开始传输数据。传输完成后,双方可以选择断开连接。

参考资料

  • [Java Socket编程](

以上是关于Java Socket通信协议的简单介绍和示例代码。Socket通信是一种常用的网络通信方式,适用于各种网络应用程序的开发。通过Socket,不同计算机上的进程可以进行可靠的数据传输和通信。