使用 UDP 套接字发送和接收第二个客户端和服务器

问题描述 投票:0回答:0

我正在编写一个使用 UDP 的程序,它首先向 Client1 中的用户询问一个数字,然后服务器将该数字转发给另一个 Client2,Client2 接收该数字计算阶乘,然后将其发送回服务器,然后服务器发回以显示结果在客户端1。 到目前为止,这是我的代码

服务器

public class UDPServer {
public static void main(String[] args) throws IOException {
    InetAddress inetAddress = InetAddress.getLocalHost();
    int port1 = 1111;
    DatagramSocket socket1 = new DatagramSocket(port1);

    System.out.println("SERVER: Waiting...");

    // Receive from CLIENT 1
    byte[] receivedByte1 = new byte[1024];
    DatagramPacket receivePackage1 = new DatagramPacket(receivedByte1, receivedByte1.length);
    socket1.receive(receivePackage1);
    String numberS = new String(receivePackage1.getData());
    System.out.println("SERVER: Receive from CLIENT1: " + numberS);


    // Send to CLIENT 2
    DatagramSocket socket2 = new DatagramSocket(2222);
    byte[] sendByte2;
    sendByte2 = numberS.getBytes();
    DatagramPacket sendPackage = new DatagramPacket(sendByte2, sendByte2.length, inetAddress,2222);
    socket2.send(sendPackage);
    System.out.println("SERVER: Sent to CLIENT2: " + numberS);

    // Receive from CLIENT 2
    byte[] receivedByte2 = new byte[1024];
    DatagramPacket receivePackage2 = new DatagramPacket(receivedByte2, receivedByte2.length);
    socket2.receive(receivePackage2);
    String result = new String(receivePackage2.getData());
    System.out.println("SERVER: Receive from CLIENT2: " + result);

    socket1.close();
    socket2.close();
}
}

客户 1

public class UDPClient1 {
public static void main(String[] args) throws IOException {
    System.out.println("CLIENT1: Introduce a number...");
    DatagramSocket socket = new DatagramSocket();
    InetAddress inetAddress = InetAddress.getLocalHost();

    int port = 1111;
    byte[] sendData;
    Scanner scanner = new Scanner(System.in);
    int number = scanner.nextInt();
    String numberS = String.valueOf(number);
    sendData = numberS.getBytes();


    DatagramPacket sendPackage = new DatagramPacket(sendData, sendData.length,inetAddress, port);
    socket.send(sendPackage);
    System.out.println("CLIENT1: Sent " + number + " to SERVER...");

    socket.close();
}

}

客户 2

public class UDPClient2 {
public static void main(String[] args) throws IOException {

    InetAddress inetAddress = InetAddress.getLocalHost();
    int port = 2222;
    DatagramSocket socket = new DatagramSocket(port);

    System.out.println("CLIENT2: Waiting...");

    // Receive number from SERVER
    byte[] receivedByte = new byte[1024];
    DatagramPacket receivePackage = new DatagramPacket(receivedByte, receivedByte.length);
    socket.receive(receivePackage);
    String numberS = new String(receivePackage.getData());
    System.out.println("SERVER: Receive from SERVER: " + numberS);

    // Calculate factorial
    int number = Integer.parseInt(numberS.trim());
    int result = 1;
    for (int i = 1; i <= number; i++) {
        result = result * i;
    }
    String resultS = String.valueOf(result);
    System.out.println("Result: " + resultS);

    // Send number to SERVER
    byte[] sendData;
    sendData = resultS.getBytes();
    DatagramPacket sendPackage = new DatagramPacket(sendData,sendData.length,inetAddress,2222);
    socket.send(sendPackage);
    System.out.println("CLIENTE2: Sent: " + resultS + " to SERVER...");

    socket.close();

}

}

直到现在我只能设法从 CLIENT1 中输入的数字计算 CLIENT2 中数字的阶乘,SERVER 没有收到来自 CLIENT2 的结果。我该如何解决这个问题?

java sockets udp serversocket
© www.soinside.com 2019 - 2024. All rights reserved.