欢迎访问宙启技术站
智能推送

如何在Java中实现TCP socket通信?

发布时间:2023-07-02 04:25:09

在Java中实现TCP socket通信需要使用Java的Socket和ServerSocket类。Socket类代表客户端的套接字,ServerSocket类代表服务器端的套接字。

1. 服务器端实现TCP socket通信:

1. 创建一个ServerSocket实例,并指定服务器端口号。

2. 调用ServerSocket的accept()方法,等待客户端连接。

3. 一旦有客户端连接,accept()方法将返回一个Socket对象,用于与客户端进行通信。

4. 使用Socket的InputStream和OutputStream来进行读写操作。

5. 关闭连接,释放资源。

示例代码如下:

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

public class TCPServer {
    public static void main(String[] args) {
        try {
            // 创建服务器端套接字
            ServerSocket serverSocket = new ServerSocket(9999);

            // 等待客户端连接
            Socket socket = serverSocket.accept();

            // 获取输入流和输出流
            InputStream inputStream = socket.getInputStream();
            OutputStream outputStream = socket.getOutputStream();

            // 读取客户端发送的数据
            BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
            String message = reader.readLine();
            System.out.println("收到客户端的消息:" + message);

            // 向客户端发送数据
            BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(outputStream));
            writer.write("Hello from server");
            writer.newLine();
            writer.flush();

            // 关闭连接
            reader.close();
            writer.close();
            socket.close();
            serverSocket.close();

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

2. 客户端实现TCP socket通信:

1. 创建一个Socket实例,并指定服务器的IP地址和端口号。

2. 使用Socket的InputStream和OutputStream来进行读写操作。

3. 关闭连接,释放资源。

示例代码如下:

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

public class TCPClient {
    public static void main(String[] args) {
        try {
            // 创建客户端套接字
            Socket socket = new Socket("localhost", 9999);

            // 获取输入流和输出流
            InputStream inputStream = socket.getInputStream();
            OutputStream outputStream = socket.getOutputStream();

            // 向服务器发送数据
            BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(outputStream));
            writer.write("Hello from client");
            writer.newLine();
            writer.flush();

            // 读取服务器发送的数据
            BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
            String message = reader.readLine();
            System.out.println("收到服务器的消息:" + message);

            // 关闭连接
            reader.close();
            writer.close();
            socket.close();

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

以上就是在Java中实现TCP socket通信的基本步骤,通过Socket和ServerSocket类可以实现服务器和客户端之间的双向通信。在实际应用中,可以根据具体需求进行扩展和优化。