java - 收到的 UDP 消息长度不正确

标签 java sockets udp

我正在从 DatagramSocket 接收一条 UDP 消息,并尝试像这样解析该消息:

this.broadSock.receive(recvPacket);

// Decode response
byte[] response = recvPacket.getData();
String strResp = new String(response);
String[] splitResp = strResp.split("\\s+");
log.debug("The String: " + strResp + " has the length " + strResp.length());

InetAddress lobbyAdress = InetAddress.getByName(splitResp[0].substring(1));
String portStr = splitResp[1];
int lobbyPort = Integer.parseInt(portStr);

我收到以下异常:

java.lang.NumberFormatException: For input string: "8080"

因此,调试输出给出的接收字符串有问题:

The String: /192.168.0.11 8080 has the length 256

有人知道为什么会发生这种情况吗?

最佳答案

提供了长度,但您忽略了它。应该是:

String strResp = new String(packet.getData(), packet.getOffset(), packet.getLength());
String[] splitResp = strResp.split("\\s+");
log.debug("The response: " + strResp + " has the length " + packet.length());

关于java - 收到的 UDP 消息长度不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36533359/

相关文章:

c - 使用 UDP 套接字通过 connect()ing 获取我自己的 IP 地址?

c++ - UDP recv/recv 来自多个发件人

java - Sonar : Disable XML external entity (XXE) processing

c# - TCP 服务器/客户端的自定义消息框架协议(protocol)

java - 如何将文件包含到 NetBeans 平台框架应用程序中

sockets - 当使用环回地址使用 TCP/IP 套接字执行 IPC 时,公共(public)网络堆栈是否会跳过在较低级别的 PDU 中构建消息的框架?

sockets - DTLS-Server 在第二个 ClientHello 之后没有正确回答

sockets - 第一次响应后 TCP 服务器失败

java - "this"java 查询点

java - JAX-WS Web 服务