java nio socket 怎么让客户端知道服务器端将数据发送完毕

 我来答
zuchunlei521
推荐于2016-04-10 · TA获得超过298个赞
知道小有建树答主
回答量:105
采纳率:100%
帮助的人:87.9万
展开全部
首先,TCP是流协议,数据没有边界。在整个通信过程中,连接从SYN-FIN之间发送的数据,接收方是无法判断发送方是否发送完全的。这样,数据包的定义就如应用层来处理了,典型的封包方式有:1,按数据长度。2,根据特殊字符。另外,TCP的传输与应用层的write还是不同步的,应用层的write是将应用数据发送到socket的send_q中,虽然write调用返回,但是应用数据还是本方socket的send_q中,并没有发送到对方。同样,即使在真正的传输中,本方的数据也不一定全部发送到接收方,这收到接收方当前的状态影响,比如说应用进行是否立即读取了数据。这里就存在滑动窗口之类的机制了。这种情况就会产生应用数据的粘包和拆包的问题。好了,先说这么多。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式