分类: LINUX
2008-08-15 11:28:24
回复人:galaxy_fxstar(阿星) 二级(初级) 信誉:100 2005-1-31 14:37:46 得分:10 |
------//将上一个问题换一种提法: 若同一个socket连续发送了两个数据包(UDP,间隔很小),接收端采用recvfrom()接收,是一次接收完两个数据包,还是会分两次接收(一次一个包)?如果是后者的话,就不用确定数据边界了。 // 发送端使用sendto()和接收端使用recvfrom()是配对的,也就是说每使用一次recvfrom()只能接收一个sendto()发送的报文,而且两个函数的size是一致的,并且都制定了ip+port,这样的话接收可以准确并且唯一的得到数据。 对于多个机器做为发送端的情况,接收端应该为每个机器开一个线程来做处理。 |
回复人:gdy119(夜风微凉) 一星(中级) 信誉:105 2005-1-31 17:04:26 得分:20 |
udp收报文的方式跟tcp是不同的,做tcp习惯了呵呵容易混淆 ,另外的这种情况只存在tcp中吧 ,就是比如 tcp包发出去后 对方没有收到 这个时候就需要重传 ,此时就出现了2个tcp包叠加在一个包中的情况 呵呵 但这种情况在udp中应该不会出现的因为他没有保障机制
|