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

如何使用Java中的Socket类实现TCP/IP网络编程?

发布时间:2023-07-03 20:37:13

使用Java中的Socket类实现TCP/IP网络编程可以分为客户端和服务器端两个部分。客户端使用Socket类来连接服务器并发送请求,服务器端使用Socket类来接收请求并发送响应。

1. 客户端代码实现:

import java.io.*;

import java.net.*;

public class Client {

    public static void main(String[] args) {

        String serverIP = "localhost"; // 服务器IP地址

        int serverPort = 8080; // 服务器端口号

        try {

            // 创建一个新的Socket并连接到服务器

            Socket socket = new Socket(serverIP, serverPort);

            // 获取Socket的输入/输出流

            OutputStream outputStream = socket.getOutputStream();

            InputStream inputStream = socket.getInputStream();

            

            // 构造发送给服务器的请求数据

            String requestData = "Hello, server!";

            byte[] requestBytes = requestData.getBytes("UTF-8");

            // 发送请求数据

            outputStream.write(requestBytes);

            outputStream.flush();

            // 接收服务器的响应数据

            byte[] responseBytes = new byte[1024];

            inputStream.read(responseBytes);

            String responseData = new String(responseBytes, "UTF-8");

            System.out.println("服务器响应:" + responseData);

            

            // 关闭Socket

            socket.close();

        } catch (IOException e) {

            e.printStackTrace();

        }

    }

}

2. 服务器端代码实现:

import java.io.*;

import java.net.*;

public class Server {

    public static void main(String[] args) {

        int serverPort = 8080; // 服务器监听的端口号

        try {

            // 创建一个ServerSocket,并指定监听的端口号

            ServerSocket serverSocket = new ServerSocket(serverPort);

            

            while (true) {

                // 等待客户端的连接请求

                Socket socket = serverSocket.accept();

                

                // 获取Socket的输入/输出流

                InputStream inputStream = socket.getInputStream();

                OutputStream outputStream = socket.getOutputStream();

                // 接收客户端的请求数据

                byte[] requestBytes = new byte[1024];

                inputStream.read(requestBytes);

                String requestData = new String(requestBytes, "UTF-8");

                System.out.println("接收到的请求:" + requestData);

                

                // 构造发送给客户端的响应数据

                String responseData = "Hello, client!";

                byte[] responseBytes = responseData.getBytes("UTF-8");

                // 发送响应数据

                outputStream.write(responseBytes);

                outputStream.flush();

                

                // 关闭Socket

                socket.close();

            }

        } catch (IOException e) {

            e.printStackTrace();

        }

    }

}

以上就是使用Java中的Socket类实现TCP/IP网络编程的基本步骤。客户端先创建一个Socket并连接到服务器,然后获取Socket的输入/输出流,发送请求数据并接收服务器的响应数据,最后关闭Socket。服务器端先创建一个ServerSocket并指定监听的端口号,然后进入循环等待客户端的连接请求,接收客户端的请求数据并发送响应数据,最后关闭Socket。