我们使用 DatagramSocket 通过 UDP 发送消息。目前我们使用以下代码。
private void doSend() throws IOException, SocketException {
try (DatagramSocket clientSocket = new DatagramSocket()) {
byte[] messageBytes = message.getBytes(Charset.forName("UTF-8"));
DatagramPacket sendPacket = new DatagramPacket(messageBytes, messageBytes.length, address,
port);
clientSocket.send(sendPacket);
}
}
如您所见,我们DatagramSocket
为每条消息重新创建。出于性能原因,我们考虑只创建一次套接字,而不是为每条消息创建一次。该代码存在于一个长期存在的对象中,因此这意味着套接字可以存活几天。
我的问题是是否DatagramSocket
可以通过某些错误变得无效并且必须重新创建,或者我们是否可以简单地创建一次套接字并完成它?如果它可能变得无效并且必须重新创建,我们如何检测到呢?