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

利用Java函数实现TCP/IPSocket编程

发布时间:2023-11-22 17:07:44

在Java中,可以使用java.net包下的Socket和ServerSocket类来实现TCP/IPSocket编程。

首先,需要创建一个服务器端程序来监听客户端的连接请求。以下是一个简单的服务器端程序的实现:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

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("客户端已连接:" + socket.getInetAddress().getHostAddress());

            // 获取输入流,读取客户端发送的数据
            BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            // 获取输出流,向客户端发送数据
            PrintWriter writer = new PrintWriter(socket.getOutputStream(), true);

            // 循环读取客户端发送的数据
            String line;
            while ((line = reader.readLine()) != null) {
                System.out.println("客户端发送的数据:" + line);
                // 向客户端发送响应数据
                writer.println("服务器已接收到数据:" + line + ",并进行了处理!");
            }

            // 关闭资源
            writer.close();
            reader.close();
            socket.close();
            serverSocket.close();

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

接下来,可以创建一个客户端程序来连接服务器并发送数据。以下是一个简单的客户端程序的实现:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;

public class Client {
    public static void main(String[] args) {
        try {
            // 创建Socket对象,指定服务器的IP地址和端口号
            Socket socket = new Socket("127.0.0.1", 8888);
            
            // 获取输入流,读取服务器发送的数据
            BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            // 获取输出流,向服务器发送数据
            PrintWriter writer = new PrintWriter(socket.getOutputStream(), true);

            // 向服务器发送数据
            writer.println("Hello, Server!");

            // 接收服务器的响应数据
            String response = reader.readLine();
            System.out.println("服务器响应数据:" + response);

            // 关闭资源
            writer.close();
            reader.close();
            socket.close();

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

通过运行以上的服务器端程序和客户端程序,可以实现基本的TCP/IPSocket通信。服务器端会监听客户端的连接请求,接收并处理客户端发送的数据,并向客户端发送响应数据。

在实际的应用中,可以根据需要进行扩展和优化,例如对接收到的数据进行协议解析和业务处理等。