【发布时间】:2020-11-04 12:30:34
【问题描述】:
我有一个 UDP 客户端的最小实现:
final class UdpClient {
private final DatagramSocket socket;
private final InetAddress address;
private final Integer port;
UdpClient(URI location) {
port = location.getPort();
try {
socket = new DatagramSocket();
address = InetAddress.getByName(location.getHost());
} catch (SocketException | UnknownHostException e) {
throw new RuntimeException("Error setting up UDP connection", e);
}
}
void sendData(String msg) {
byte[] buf = msg.getBytes();
DatagramPacket packet
= new DatagramPacket(buf, buf.length, address, port);
try {
socket.send(packet);
} catch (IOException e) {
LOG.warn("Failed to send data {}", e.getMessage());
}
}
public void close() {
socket.close();
}
}
现在我开始质疑这是否是一个有效的 impl,因为我从未收到过回复。我不关心回复的后果是什么?这甚至是一个没有明确得到回复的有效 impl 吗?
更新
我提出问题的原因是我担心如果我从不进行显式接收,可能会有一些底层缓冲区正在填满。此客户端可用于发送回复的服务器或不发送回复的服务器。
【问题讨论】:
-
您期待回复吗?
-
不确定服务器是如何工作的,但即使有回复,我也不在乎。
标签: java networking udp