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