java - DatagramSocket.receive() 什么时候抛出 IOException?

标签 java sockets ioexception datagram

我正在创建一个需要监听传入 UDP 包的服务器。

我的问题是我不知道如何处理 DatagramSocket.receive() 上的 IOException。我能找到的每个教程要么只是打印其堆栈跟踪并继续,要么将其从方法中丢弃。没有人真正告诉我何时或为何抛出异常。甚至 Javadoc 也只是指出:

IOException - if an I/O error occurs when creating the socket.

这让我很难回答在这种情况下我应该做什么。

  • 我可以安全地继续读取套接字吗?
  • 我应该关闭它并重试吗?
  • 我应该将其视为致命异常并退出一切吗?

最佳答案

如果您设置了读取超时并且超时,它会抛出SocketTimeoutException。在这种情况下,您可以重试。如果出现其他错误,它会抛出 IOException:大多数错误对于套接字来说都是致命的,您必须将其关闭。

关于java - DatagramSocket.receive() 什么时候抛出 IOException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19875464/

相关文章:

java - Socket编程中java中A、B、S如何通信?

java - 如何正确测试java中的instanceof

Java 8 Lambda 按列表过滤

java - C3p0 连接池大小为每次调用随机增加

python - celery worker raise sock setsockopt TCP_SYNCNT [Errno 22] 参数无效

java - 为什么这个套接字为空?

android - java.io.io异常: open failed: einval (Invalid argument) when saving a image to external storage

java - 如何设置字符串变量并将其作为文件名传递到文件读取器扫描仪中?

java - 尝试访问 LauncherProvider

javascript - Socket.io 按钮监听器无法在移动设备上工作