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

Java函数实现客户端和服务端的Socket连接

发布时间:2023-07-01 08:30:21

Java中可以使用Socket来建立客户端和服务端之间的连接。Socket是用于描述IP地址和端口的类,它提供了connect()和accept()方法来建立连接。

客户端实现:

首先,创建一个Socket对象,通过指定服务器的IP地址和端口号来连接到服务器。然后,通过Socket的getOutputStream()方法获取输出流,使用输出流向服务器发送数据。最后,使用Socket的getInputStream()方法获取输入流,通过输入流接收服务器端的响应数据。

示例代码如下:

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;

public class Client {
    public static void main(String[] args) {
        String serverIP = "127.0.0.1"; // 服务器IP地址
        int serverPort = 8888; // 服务器端口号

        try {
            // 创建Socket对象
            Socket socket = new Socket(serverIP, serverPort);

            // 获取输出流
            OutputStream outputStream = socket.getOutputStream();

            // 向服务器发送数据
            String data = "Hello Server!";
            outputStream.write(data.getBytes());

            // 获取输入流
            InputStream inputStream = socket.getInputStream();

            // 接收服务器响应数据
            byte[] buffer = new byte[1024];
            int length = inputStream.read(buffer);
            String response = new String(buffer, 0, length);
            System.out.println("Server Response: " + response);

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

服务端实现:

首先,创建一个ServerSocket对象,通过指定端口号来监听客户端的连接。然后,通过ServerSocket的accept()方法,获取客户端的Socket对象。接下来,使用Socket的getInputStream()方法获取输入流,通过输入流接收客户端发送的数据。最后,使用Socket的getOutputStream()方法获取输出流,向客户端发送响应数据。

示例代码如下:

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {
    public static void main(String[] args) {
        int serverPort = 8888; // 服务器监听端口号

        try {
            // 创建ServerSocket对象
            ServerSocket serverSocket = new ServerSocket(serverPort);
            System.out.println("Server started");

            // 监听客户端连接
            Socket socket = serverSocket.accept();
            System.out.println("Client connected");

            // 获取输入流
            InputStream inputStream = socket.getInputStream();

            // 接收客户端发送的数据
            byte[] buffer = new byte[1024];
            int length = inputStream.read(buffer);
            String message = new String(buffer, 0, length);
            System.out.println("Client Message: " + message);

            // 获取输出流
            OutputStream outputStream = socket.getOutputStream();

            // 向客户端发送响应数据
            String response = "Hello Client!";
            outputStream.write(response.getBytes());

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

以上就是使用Java函数实现客户端和服务端的Socket连接的方法。通过Socket的connect()和accept()方法,可以在客户端和服务端之间建立连接,并通过输入流和输出流进行数据的传输。