Java:如何允许UDP套接字程序通过阻塞I/O进行接收和发送?

Java:如何允许UDP套接字程序通过阻塞I/O进行接收和发送?,java,sockets,udp,Java,Sockets,Udp,我只是在摆弄一个UDP聊天程序,它只允许在两个客户端之间发送消息。我正在使用DatagramSocket和DatagramPack类。我遇到的问题是,当一个客户机使用receive等待从另一个客户机接收数据报时,由于该客户机的I/O被阻止,我无法向该客户机发送任何消息,因此我当前的版本一次只允许来回发送一条消息。我试图实现的目的是允许receive方法与代码的发送部分分开侦听和运行,这样用户就可以在不等待回复的情况下发送任意多的消息。如有任何关于示例的建议,将不胜感激。谢谢。每端需要两个线程,一

我只是在摆弄一个UDP聊天程序,它只允许在两个客户端之间发送消息。我正在使用DatagramSocket和DatagramPack类。我遇到的问题是,当一个客户机使用receive等待从另一个客户机接收数据报时,由于该客户机的I/O被阻止,我无法向该客户机发送任何消息,因此我当前的版本一次只允许来回发送一条消息。我试图实现的目的是允许receive方法与代码的发送部分分开侦听和运行,这样用户就可以在不等待回复的情况下发送任意多的消息。如有任何关于示例的建议,将不胜感激。谢谢。

每端需要两个线程,一个用于接收消息(并显示它们),另一个用于接收用户输入并发送这些消息。

好的,很好。还有一个后续问题。在每一端创建一个套接字并在用于发送的线程和用于接收的线程中使用该套接字是安全的,还是每个线程都应该使用自己的套接字。我对此知之甚少,所以我只是想知道,如果理论上客户在同一时刻收到消息并发送消息,这是否会发生冲突。谢谢。@user1712917是的,您可以(也应该)在每一端使用一个套接字,并在线程之间共享它。