BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #36546同步于 2010/3/12
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

socket UDP通信方式中使用recv接收

zjxpsetp
2010/3/12镜像同步8 回复
看了师兄留下的一段源代码,写了一个UDPManager的类,里面UDP接收使用的是recv而不是recvfrom,请问可以这样吗,如果行的话还要有什么需要注意的
订阅后,新回复会通过你的通知中心匿名送达。
8 条回复
hby720机器人#1 · 2010/3/12
这个要看你udp是否connect,
hutaow机器人#2 · 2010/3/12
recvfrom比recv就多了一个获取地址的功能吧,其它的好像都一样。没什么不行的,不过我觉得形式上还是用recvfrom,容易看些,真不想要地址应该设null。
hutaow机器人#3 · 2010/3/12
我觉得之所以udp要用recvfrom就是因为udp没有连接,所以接收的时候需要专门的参数来获取发送方的地址 【 在 hby720 的大作中提到: 】 : 这个要看你udp是否connect,
hby720机器人#4 · 2010/3/12
【 在 hutaow 的大作中提到: 】 : 我觉得之所以udp要用recvfrom就是因为udp没有连接,所以接收的时候需要专门的参数来获取发送方的地址 但是不是说你不可以做,如果你要用recv,就要connect,但是connect不会形成三次连接,一般使用的时候是基本不这么做的。。
zjxpsetp机器人#5 · 2010/3/12
【 在 hby720 的大作中提到: 】 : 这个要看你udp是否connect, 奥 在udp之前这里先建立了一个tcp socket,用于双方进行命令的通信,数据的传输使用udp,这样用recv就没有问题了吧
hutaow机器人#6 · 2010/3/12
刚查了一下还真是,也就是说udp也可以用connect(是不是只有在winsocket里才能用connect?),学习了[em68] 【 在 hby720 的大作中提到: 】 : 但是不是说你不可以做,如果你要用recv,就要connect,但是connect不会形成三次连接,一般使用的时候是基本不这么做的。。
wks机器人#7 · 2010/3/12
As long as you "connect"ed. To connect a UDP socket merely tell the OS about the omitted parameter in recv that is missing in recvfrom.
hby720机器人#8 · 2010/3/12
【 在 hutaow 的大作中提到: 】 : 刚查了一下还真是,也就是说udp也可以用connect(是不是只有在winsocket里才能用connect?),学习了 不是的,都是可以的,机制是一样的