Java:通过 UDP 发送 JSON
Java: send JSON over UDP
如何通过 UDP 在 Java 中发送 JSONObject?
对于 TCP,我使用以下代码:
private OutputStreamWriter outStreamW;
public void sendToConsumer(JSONObject jsonOb, Socket tcpSocket) {
try {
outStreamW = new OutputStreamWriter(tcpSocket.getOutputStream(), StandardCharsets.UTF_8);
outStreamW.write(jsonOb.toString() + "\n");
outStreamW.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
但是我错过了通过 UDP 实现的方法
1) 序列化 JSON(例如转换为字符串)
2) 根据大小划分数据包(例如拆分字符串)
3) send UDP packets
接收方可能只接收到几个数据包,即使接收到所有数据包,它也会按任何顺序接收。如果您有 5 个数据包,您可能想要添加一些前导数字,例如 1/5 2/5 3/5 等。这只是一个想法。我会坚持使用 TCP。
此外,您必须在反序列化逻辑中添加一些超时。
如何通过 UDP 在 Java 中发送 JSONObject?
对于 TCP,我使用以下代码:
private OutputStreamWriter outStreamW;
public void sendToConsumer(JSONObject jsonOb, Socket tcpSocket) {
try {
outStreamW = new OutputStreamWriter(tcpSocket.getOutputStream(), StandardCharsets.UTF_8);
outStreamW.write(jsonOb.toString() + "\n");
outStreamW.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
但是我错过了通过 UDP 实现的方法
1) 序列化 JSON(例如转换为字符串)
2) 根据大小划分数据包(例如拆分字符串)
3) send UDP packets
接收方可能只接收到几个数据包,即使接收到所有数据包,它也会按任何顺序接收。如果您有 5 个数据包,您可能想要添加一些前导数字,例如 1/5 2/5 3/5 等。这只是一个想法。我会坚持使用 TCP。
此外,您必须在反序列化逻辑中添加一些超时。