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

使用Java的网络相关函数进行Socket编程

发布时间:2023-07-22 03:01:27

在Java中,可以使用java.net包中的类进行Socket编程。下面是一个示例代码,用于演示如何使用Java的网络相关函数进行Socket编程:

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

public class SocketServer {
    public static void main(String[] args) {
        try {
            // 创建一个ServerSocket,指定要监听的端口号
            ServerSocket serverSocket = new ServerSocket(8080);

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

            // 获取与客户端通信的输入输出流
            BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
            PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);

            // 读取客户端发送的消息
            String message = in.readLine();
            System.out.println("Received message from client: " + message);

            // 向客户端发送消息
            out.println("Hello client!");

            // 关闭连接
            clientSocket.close();
            serverSocket.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

上述代码实现了一个简单的Socket服务器,它监听8080端口,等待客户端连接。当有客户端连接到服务器时,服务器会读取客户端发送的消息,然后向客户端发送一个简单的回复消息,最后关闭连接。

下面是一个示例客户端代码,用于连接到上述服务器并发送消息:

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

public class SocketClient {
    public static void main(String[] args) {
        try {
            // 创建一个Socket,指定服务器的IP地址和端口号
            Socket socket = new Socket("localhost", 8080);

            // 获取与服务器通信的输入输出流
            BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            PrintWriter out = new PrintWriter(socket.getOutputStream(), true);

            // 向服务器发送消息
            out.println("Hello server!");

            // 读取服务器发送的消息
            String message = in.readLine();
            System.out.println("Received message from server: " + message);

            // 关闭连接
            socket.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

上述代码实现了一个简单的Socket客户端,它连接到服务器的localhost地址的8080端口,并向服务器发送一个简单的消息。然后客户端会读取服务器发送的回复消息,最后关闭连接。

以上代码展示了使用Java的网络相关函数进行Socket编程的基本步骤。可以根据需求进行扩展,例如实现多线程的服务器以支持并发连接,或者实现更复杂的协议交互。