关于java Socket的异步调用,思路问题,100元现金报酬

我本来利用Socket通信,我的思维步骤是这样的:客户端发送数据,服务端接收数据,服务端返回数据,客户端接收数据。但我发现这里存在一个问题。服务端接收和发送数据,在一个线... 我本来利用Socket通信,我的思维步骤是这样的:
客户端发送数据,服务端接收数据,服务端返回数据,客户端接收数据。但我发现这里存在一个问题。
服务端接收和发送数据,在一个线程里面,这没有什么问题,因为服务端先接收然后分析数据然后发送数据,逻辑就是这样子,在一个线程里可以这样完成。
但客户端就很奇怪,我客户端也是在一个线程里发送和接收,发送好说,但发送完即执行接收好像逻辑上不对,因为返回的数据是服务器发送的。这就很神奇了。更神奇的是,我发送完数据,把发送数据的那一端挂机(shutupdown),然后接收数据,居然能接收到。
我想了很久,觉得不对,首先Socket是一个长连接,而我只能保持一次通话。第二Socket客户端的接收应该是个异步事件,不可能在同一线程下。也或许客户端服务端的发送和接收都是一个异步事件。
客户端的异步事件很好理解,只是异步读和写,那服务端异步事件前还要线程循环获取连接的Socket,这是怎么回事呢,服务端既要接收连接的客户端,又要异步读写,这怎么实现呢?
我的问题就是这样,我想了解客户端调用异步读写的原因,服务读实现循坏读取连接的Socket,和连接Socket的异步读写。
如果能用浅显的道理让我明白,我愿意付出100元的话费,做为您的酬劳。
展开
 我来答
notole
2015-05-29 · TA获得超过247个赞
知道小有建树答主
回答量:271
采纳率:45%
帮助的人:104万
展开全部
这样不就好了,不管服务器还是客户端,只要socket连接成功,就分别开启一个读线程,不停读取另一端数据,再开启一个写线程,比如从控制端读取的消息。在发送到另一端。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式