有没有办法确定从客户端交换到服务器的数据类型?
以下是我认为答案应该如下的代码示例:
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
}
答案 0 :(得分:1)
packet.getData()返回一个字节数组。由你来解释它。 基本上,您的服务器需要了解客户端用于将其数据编码为字节的方法。例如(不一定是最佳选项),您可以使用java序列化协议: 在客户端:
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。