如何使用多线程在java中的套接字编程中同时发送和接收数据?

时间:2012-11-12 18:37:51

标签: java sockets concurrency datagram

我是Java新手并尝试使用Datagram套接字编写程序来发送&在客户端和服务器之间接收数据包。问题是当光标到达receive()行时,它会卡在那里直到数据包到达。在此期间,如何将数据发送到另一方?换句话说,如何使用数据报套接字同时发送和接收它?

2 个答案:

答案 0 :(得分:4)

您需要主题(或NIO / netty,但这需要更高级)。

如果无法一次处理,基本上阻塞IO(顾名思义)会阻止每个读/写操作的当前线程。因此,您需要第二个线程来处理写入。每个优秀的Java套接字教程都将包含一个多线程服务器的示例。

答案 1 :(得分:-1)

看起来你指的是异步I / O,虽然这确实是通过使用线程和套接字实现的(如前所述),但最好使用NIO:http://en.wikipedia.org/wiki/New_I/O

它可以更好地扩展,并且基于事件,这是一个比多线程更容易掌握的概念,假设您没有太多的IO和网络经验。您可以使用Apache MINA避免一些复杂性:http://mina.apache.org/