读书人

请问recv 和 recvfrom的区别

发布时间: 2012-02-09 18:22:27 作者: rapoo

请教recv 和 recvfrom的区别?
看来一下关于 TCP 和UDP 两种方法的编程。
不知道理解的对不对
对于TCP而言
recv()函数来接受TCP协议数据包时应该是搭配while或者循环一类来使用因为执行recv后不管有没有接收到数据是直接返回的。

对于UDP协议而言
而recvfrom函数接受UDP协议数据包时是一直等待的直到接收到数据为止。


不知道这样理解对不对?因为调试程序的时候recv直接跳过去了,而recvfrom是一直等待的。

但是有人说recv是对recvfrom的复杂实现。那recv不进行等待就搞不懂了



[解决办法]
recv不等待是因为你使用的是非阻塞socket,换而你使用阻塞socket一样需要等待。
recv的recvfrom是可以替换使用的,只是recvfrom多了两个参数,可以用来接收对端的地址信息,这个对于udp这种无连接的,可以很方便地进行回复。而换过来如果你在udp当中也使用recv,那么就不知道该回复给谁了,如果你不需要回复的话,也是可以使用的。另外就是对于tcp是已经知道对端的,就没必要每次接收还多收一个地址,没有意义,要取地址信息,在accept当中取得就可以加以记录了。
[解决办法]
TCP and UDP
[解决办法]

探讨
recv不等待是因为你使用的是非阻塞socket,换而你使用阻塞socket一样需要等待。
recv的recvfrom是可以替换使用的,只是recvfrom多了两个参数,可以用来接收对端的地址信息,这个对于udp这种无连接的,可以很方便地进行回复。而换过来如果你在udp当中也使用recv,那么就不知道该回复给谁了,如果你不需要回复的话,也是可以使用的。另外就是对于tcp是已经知道对端的,就没必要每次接收还多收一个地址,没有意义,要取地址信息,在…

读书人网 >VC/MFC

热点推荐