免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 7531 | 回复: 8
打印 上一主题 下一主题

read和recvfrom收消息有差别么? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-05-18 21:51 |只看该作者 |倒序浏览
这两个函数都一样吧?

论坛徽章:
0
2 [报告]
发表于 2012-05-18 23:23 |只看该作者
当然不一样,首先函数原型就不一样。
recvfrom/sendto  只用来发送UDP数据
read/write  TCP,UDP数据都可以传输

论坛徽章:
0
3 [报告]
发表于 2012-05-18 23:41 |只看该作者
引自 Linux manpage recv(2):
The recv() call is normally used only on a connected socket (see connect(2)) and is identical to recvfrom() with a NULL src_addr argument.

论坛徽章:
0
4 [报告]
发表于 2012-05-19 00:17 |只看该作者
回复 3# 变异老鼠

recvfrom  和 read


    用read好像不能得到发来端的信息了

论坛徽章:
0
5 [报告]
发表于 2012-05-19 07:53 |只看该作者
为什么要一样?如果是一样,或者一个能完全包涵另一个,那搞2个干什么?

论坛徽章:
0
6 [报告]
发表于 2012-05-19 09:00 |只看该作者
回复 5# walleeee


    .. scanf fscanf vscanf vfscanf .....

论坛徽章:
0
7 [报告]
发表于 2012-05-19 12:35 |只看该作者
主要怕影响功能  只要能一样收到消息就好

论坛徽章:
0
8 [报告]
发表于 2012-05-19 13:48 |只看该作者
回复 4# ww2000e

最近眼神果然越来越差了……{:2_177:}

recvfrom 只能用于 socket fd。read 一个 socket fd 相当于 recv 的 flags 为 0。而后者又相当于 recvfrom 的 flags 为 0,src_addr 为 NULL。

http://pubs.opengroup.org/onlinepubs/9699919799/
If fildes refers to a socket, read() shall be equivalent to recv() with no flags set.

论坛徽章:
0
9 [报告]
发表于 2012-05-19 16:10 |只看该作者
回复 6# hbmhalley


它们用起来方便。

read/recvfrom,难道一个比另外一个方便?(这里持保留意见,可能我这个说法不准确,你忽视

以下来manpage,供参考

捕获.PNG (6.96 KB, 下载次数: 57)

捕获.PNG
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP