gpt4 book ai didi

java - 如何检查通过 UDP 连接交换的数据类型

转载 作者:行者123 更新时间:2023-12-01 12:15:44 25 4
gpt4 key购买 nike

有没有办法确定从客户端到服务器交换的数据类型?

下面是我认为我的答案应该是什么样子的代码示例:

byte[] dataBook = new byte[1024];
DatagramPacket packetR = new DatagramPacket(dataBook, dataBook.length);
dS.receive(packetR);

// the following is psuedo code
if (packetR.getData() is off data type String) {
// do code here
}
if (packetR.getdata() is off data type File) {
// do diff code here
}

最佳答案

packet.getData() 返回一个字节数组。由你来解释它。基本上,您的服务器需要了解客户端将其数据编码为字节的方法。例如(不一定是最佳选择),您可以使用 java 序列化协议(protocol):在客户端:

ByteArrayOutputStream bytes = new ByteArrayOutputStream();
ObjectOutputStream os = new ObjectOutputStream(bytes);
os.writeObject(messageToSend);
os.close();
datagramPacket.setData(bytes.toByteArray());
socket.send(datagramPacket);

然后,在服务器上:

byte bytes[] = datagramPacket.getData();
ObjectInputStream is = new ObjectInputStream(new ByteArrayInputStream(bytes));
Serializable messageReceived = is.readObject();
if(messageReceived instanceof String) {
handleString((String) messageReceived);
}
else {
// etc.
}

您可能会找到一些信息in this tutorial有帮助。

关于java - 如何检查通过 UDP 连接交换的数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27018239/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com