关于TCP的流式服务

   我们假设发送方为hosta,接收方为hostb

     hosta向hostb发送一组信息,假设hosta只需要一个TCP报文分组即可将数据推向internet,

而接收方hostb则有可能会需要接收很多次,才能将数据接收完,然后将分片的数据排序好,再通过插口上传到对应的应用层。

     现在我们以极端的例子说明接收的实质:

    hosta发送一个无符号长整型的数据 x 给hostb:

                X=2147549442 D =1000 0000   0000 0001  0000 0001  0000 0010 B

 那么hostb在接收时是以下面方式接收的:

     如图所示


 如果第一个片中只有前十六个bit的数据(1000 0000   0000 0001  ),那么下一个片中将会得到后十六bit的数据( 0000 0001  0000 0010),按照图中所示的放在接收buffer中,注意传输过程中是以byte为单位传输的(就是说一个字节的数据是不会出现在两个分片当中的,这一点很重要)。

  由于我们需要的是无符号长整型数据,而我们得到的是存储在char型的数组里的信息,所以呢,来个强制转化那是必须的了,这样我们就获得了hosta传个hostb的数据X=2147549442

   以上是我自己的心得,如有错误之处,大家一起讨论哈。。

对于网络字节与主机字节间的转换参看我的上篇文章哈,这里不是重点。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值