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

Java网络编程函数:创建TCP/UDP客户端、服务端的实现

发布时间:2023-07-27 07:20:32

Java网络编程函数可以实现创建TCP/UDP客户端和服务端的功能。下面将分别介绍这两种实现方式。

1. 创建TCP客户端的实现函数:

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

public class TCPClient {
    public static void main(String[] args) throws Exception {
        String serverIP = "localhost";
        int serverPort = 9999;

        Socket clientSocket = new Socket(serverIP, serverPort);

        OutputStream outputStream = clientSocket.getOutputStream();
        PrintWriter out = new PrintWriter(outputStream, true);

        // 发送数据给服务端
        out.println("Hello Server");

        InputStream inputStream = clientSocket.getInputStream();
        BufferedReader in = new BufferedReader(new InputStreamReader(inputStream));

        // 接收服务端返回的数据
        String response = in.readLine();
        System.out.println("Server response: " + response);

        // 关闭连接
        clientSocket.close();
    }
}

上述代码中,首先创建了一个Socket对象来与服务端建立连接。然后通过获取Socket对象的输出流和输入流,分别创建了一个PrintWriter和一个BufferedReader对象,用于向服务端发送数据和接收服务端的返回数据。最后,关闭连接。

2. 创建TCP服务端的实现函数:

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

public class TCPServer {
    public static void main(String[] args) throws Exception {
        int serverPort = 9999;
        
        ServerSocket serverSocket = new ServerSocket(serverPort);

        System.out.println("Server is running and waiting for client connection...");

        Socket clientSocket = serverSocket.accept();

        InputStream inputStream = clientSocket.getInputStream();
        BufferedReader in = new BufferedReader(new InputStreamReader(inputStream));
        
        // 接收客户端发送的数据
        String request = in.readLine();
        System.out.println("Client request: " + request);

        OutputStream outputStream = clientSocket.getOutputStream();
        PrintWriter out = new PrintWriter(outputStream, true);

        // 发送数据给客户端
        out.println("Hello Client");

        // 关闭连接
        clientSocket.close();
        serverSocket.close();
    }
}

上述代码中,首先创建了一个ServerSocket对象来监听特定的端口,等待客户端连接。当有客户端连接时,通过ServerSocket的accept()方法获取到客户端的Socket对象。然后通过获取Socket对象的输入流和输出流,分别创建了一个BufferedReader和一个PrintWriter对象,用于接收客户端发送的数据和向客户端发送数据。最后,关闭连接。

3. 创建UDP客户端的实现函数:

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

public class UDPClient {
    public static void main(String[] args) throws IOException {
        String serverIP = "localhost";
        int serverPort = 9999;

        DatagramSocket clientSocket = new DatagramSocket();

        // 发送数据给服务端
        String message = "Hello Server";
        InetAddress serverAddress = InetAddress.getByName(serverIP);
        byte[] sendData = message.getBytes();
        DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, serverAddress, serverPort);
        clientSocket.send(sendPacket);

        // 接收服务端返回的数据
        byte[] receiveData = new byte[1024];
        DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
        clientSocket.receive(receivePacket);
        String response = new String(receivePacket.getData());
        System.out.println("Server response: " + response);

        // 关闭连接
        clientSocket.close();
    }
}

上述代码中,首先创建了一个DatagramSocket对象。然后通过将数据封装成DatagramPacket对象,指定了服务端的IP地址和端口号,使用DatagramSocket的send()方法向服务端发送数据。接收服务端返回的数据也是通过创建一个DatagramPacket对象,使用DatagramSocket的receive()方法接收数据。最后,关闭连接。

4. 创建UDP服务端的实现函数:

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

public class UDPServer {
    public static void main(String[] args) throws IOException {
        int serverPort = 9999;

        DatagramSocket serverSocket = new DatagramSocket(serverPort);

        System.out.println("Server is running and waiting for client request...");

        // 接收客户端发送的数据
        byte[] receiveData = new byte[1024];
        DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
        serverSocket.receive(receivePacket);
        String request = new String(receivePacket.getData());
        System.out.println("Client request: " + request);

        // 发送数据给客户端
        String message = "Hello Client";
        InetAddress clientAddress = receivePacket.getAddress();
        int clientPort = receivePacket.getPort();
        byte[] sendData = message.getBytes();
        DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, clientAddress, clientPort);
        serverSocket.send(sendPacket);

        // 关闭连接
        serverSocket.close();
    }
}

上述代码中,首先创建了一个DatagramSocket对象来监听特定的端口,等待客户端的请求。当有客户端请求时,通过创建一个DatagramPacket对象,使用DatagramSocket的receive()方法接收数据。然后通过获取DatagramPacket对象的地址和端口号,创建了一个新的DatagramPacket对象,使用DatagramSocket的send()方法向客户端发送数据。最后,关闭连接。

以上就是Java网络编程函数中创建TCP/UDP客户端和服务端的实现方式。