Java UDP 服务器无法解码正确的 IP 地址

标签 java udp

我正在尝试使用 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/

相关文章:

java - 软件电话/voip上有任何源代码或教程吗?

c# - UDP接收-包到达的精确时间C#

java - 在 Android Studio 1.5.1 中插入 tess4j.jar 后,Gradle 构建失败

Java/Groovy Gradle 构建错误

java - 如何获取 Throwable Scala 对象中的数据?

c# - 为什么 C#/VS 没有像 Java/Eclipse 这样的自动构建功能?

java - 登录页面共享首选项未按预期工作

sockets - UDP套接字编程中不同语言的客户端和服务器

NAT 后面的 TCP 连接

Python UDP 套接字服务器