我想了解UDP无连接客户端 - 服务器对。我在“计算机网络:自上而下”方法中获得了一些代码。 的方案如下: - UDPServer.java:如何在UDP无连接客户端 - 服务器对中在固定端口上运行客户端程序
import java.io.*;
import java.net.*;
class UDPServer
{
public static void main(String args[]) throws Exception
{
DatagramSocket serverSocket = new DatagramSocket(9876);
byte[] receiveData = new byte[1024];
byte[] sendData = new byte[1024];
while(true)
{
DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
serverSocket.receive(receivePacket);
String sentence = new String(receivePacket.getData());
System.out.println("RECEIVED: " + sentence);
InetAddress IPAddress = receivePacket.getAddress();
int port = receivePacket.getPort();
String capitalizedSentence = sentence.toUpperCase();
sendData = capitalizedSentence.getBytes();
DatagramPacket sendPacket =
new DatagramPacket(sendData, sendData.length, IPAddress, port);
serverSocket.send(sendPacket);
}
}
}
UDPClient.java
import java.io.*;
import java.net.*;
class UDPClient
{
public static void main(String args[]) throws Exception
{
BufferedReader inFromUser =
new BufferedReader(new InputStreamReader(System.in));
DatagramSocket clientSocket = new DatagramSocket();
InetAddress IPAddress = InetAddress.getByName("localhost");
byte[] sendData = new byte[1024];
byte[] receiveData = new byte[1024];
String sentence = inFromUser.readLine();
sendData = sentence.getBytes();
DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, 9876);
clientSocket.send(sendPacket);
DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
clientSocket.receive(receivePacket);
String modifiedSentence = new String(receivePacket.getData());
System.out.println("FROM SERVER:" + modifiedSentence);
clientSocket.close();
}
}
在给定的代码,我们有固定的端口号的服务器,即9876 我我很想知道如何修复客户端的端口,就像我们在给定的Java程序中为服务器所做的一样,以便消息可以返回到特定端口上的客户端。
例如,如果 客户端将向服务器发送UDP消息,则服务器将启动并运行端口号9876,并将原始消息返回到端口9877上的客户端。请帮助。
在客户端创建DatagramSocket对象时,没有什么能阻止你绑定到特定的端口,就像你在“服务器”中做的那样。 –
非常感谢。我没有想到这一点。它现在以我想要的方式工作。 – Nazgul
请注意,如果将“客户端”绑定到特定端口,则每台计算机只能使用一个客户端。如果您想使用多个客户端进行测试,则需要使用多台计算机。 –