2012-11-12 27 views
-2

我是新来的Java和试图编写一个程序使用数据报套接字发送&在客户端和服务器之间接收数据包。问题是,当光标到达行时,它会卡在那里直到数据包到达。在此期间,我怎样才能将数据发送给对方?换句话说,我怎样才能使用数据报套接字同时发送和接收?如何在Java中使用多线程在套接字编程中同时发送和接收数据?

+1

当你想同时并独立地做某些事时,你需要使用多个线程。 –

+0

如果你可以分享一些有用的代码。 – iwein

回答

4

您需要线程(或NIO/netty,但这是更先进的)。

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

-1

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

它扩展好多了,是基于事件的,假设你对IO和网络没有多少经验,这比多线程更容易理解。你可以通过使用Apache MINA来避免它的一些复杂性:http://mina.apache.org/

+0

你在这里混淆了三个不同的东西。并发I/O在阻塞模式下使用多个线程,并受'java.net'包支持。 NIO和Netty支持非阻塞I/O。异步I/O使用完成回调,而不是线程,并在JDK 1.7中作为NIO2引入。 – EJP

+0

感谢您的澄清! – javabeats

相关问题