我正在尝试使用 java UDP 制作客户端服务器应用程序。当服务器从客户端接收消息时,它应该解码 IP 地址和端口号,以便可以发回数据。问题是当从数据包中解码 IP 地址时,前面有一个/,因此它无法返回消息。程序的输出如下
等待数据 已收到:消息 /178.179.35.1 56798
我应该如何删除从数据包中解码的 IP 地址开头的/?谢谢!
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) {
System.out.println("waiting for data");
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();
System.out.println(IPAddress);
SocketAddress newtry = receivePacket.getSocketAddress();
int port = receivePacket.getPort();
System.out.println(port);
String capitalizedSentence = sentence.toUpperCase();
sendData = capitalizedSentence.getBytes();
DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, newtry);
serverSocket.send(sendPacket);
}
}
}
最佳答案
使用InetAddress.getHostAddress()获取 IP 的文本表示。
但是,看看您的代码,您可以粘贴您收到的错误吗?无论如何,您应该只使用 InetAddress 对象,因此可能会发生其他情况。
关于Java UDP 服务器无法解码正确的 IP 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5186168/