我正在尝试在进程之间建立 UDP 网络,它们在其中不断共享消息。我需要知道某个进程是否有待接收的消息。如果没有,当我调用 DatagramSocket.receive() 函数时会发生什么?程序会停止等待消息还是会忽略此功能?我不知道我是否足够清楚,甚至是否朝着正确的方向思考,所以任何提示都会有所帮助。
提前致谢。
我正在尝试在进程之间建立 UDP 网络,它们在其中不断共享消息。我需要知道某个进程是否有待接收的消息。如果没有,当我调用 DatagramSocket.receive() 函数时会发生什么?程序会停止等待消息还是会忽略此功能?我不知道我是否足够清楚,甚至是否朝着正确的方向思考,所以任何提示都会有所帮助。
提前致谢。
以下来自oracle API(http://docs.oracle.com/javase/7/docs/api/java/net/DatagramSocket.html#receive(java.net.DatagramPacket))
从这个套接字接收一个数据报包。当此方法返回时,DatagramPacket 的缓冲区被接收到的数据填充。数据报包还包含发送者的 IP 地址和发送者机器上的端口号。
此方法阻塞,直到接收到数据报。数据报包对象的长度字段包含接收到的消息的长度。如果消息长于数据包的长度,则消息被截断。
如果有安全管理器,如果安全管理器的 checkAccept 方法不允许,则无法接收数据包。