2

我正在使用 DatagramSocket 运行 UDP Java 实现,其中接收在一个线程上运行,发送操作在单独的线程上运行。当我的程序启动时,我需要调用服务器并接收回信息。问题是,由于线程,即使我先启动接收线程,有时发送会先出去,当服务器回复时,套接字还没有在另一个线程中调用接收()。由于该线程在 receive() 行上阻塞,因此我无法使用标志来验证 receive() 是否已被调用。有什么方法可以检查套接字当前是否在接收()上阻塞,以便我可以等待发送,直到我验证该条件?

4

2 回答 2

1

就在 recvfrom() 循环之前从 rx 线程启动 tx 线程,并在 tx 线程的开始处放置一个 sleep(2000),然后它也开始围绕其输入队列循环,或者它通常做的任何事情来发送东西。

于 2012-10-14T10:51:40.290 回答
0

你不需要两个插座。

  1. 创建一个DatagramSocket.它立即处于“接收状态”。

  2. 启动一个接收线程,通过DatagramSocket.

  3. 启动一个发送线程,通过DatagramSocket.

(2) 和 (3) 的顺序不再重要。

于 2012-10-16T10:03:34.313 回答