我正在开发一个基于UDP的套接字应用程序,这里有一些关于如何在接收端实现侦听功能的问题。
SocketTimeoutException中的端口进行质疑?
udpsocket_receiving.leaveGroup(serverAddress);udpsocket_receiving.disconnect();udpsocket_receiving.close();udpsocket_receiving =新MulticastSocket(SERVERPORT);udpsocket_receiving.setSoTimeout(10000);udpsocket_receiving.joinGroup(serverAddress);发布于 2017-07-13 03:34:32
不是的。您永远不会连接套接字,所以dpsocket_receiving.isConnected()永远不会是真的。在read循环中,您不需要所有那些关闭的/打开的废话。唯一一个要关闭插座的人就是你。SocketTimeoutException意味着在读取超时期间内没有收到任何数据报。您要做的事情取决于您自己,也许什么也没有,但这并不意味着您必须关闭和重新初始化套接字。重做所有这些并不能解决互联网连接问题。
您通常会错过数据包的唯一方法是丢包,但是关闭和重新打开套接字提供了一个窗口,其中肯定会发生这种情况。不要这样做。
关闭套接字时,您所要做的就是关闭它。离开它的所有多播组是自动的,就像断开连接一样,而且由于您从未连接过它,所以没有必要在第一个palce中断开它。
https://stackoverflow.com/questions/45070731
复制相似问题