免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: DNS_WXC
打印 上一主题 下一主题

[C] 关于套接字的recv函数 ---急 [复制链接]

论坛徽章:
0
21 [报告]
发表于 2008-01-22 20:40 |只看该作者

回复 #18 JohnBull 的帖子

我不用长度,用标志也行,不过还是觉得长度好用啊。

论坛徽章:
0
22 [报告]
发表于 2008-01-22 20:47 |只看该作者
原帖由 cugb_cat 于 2008-1-22 20:40 发表
我不用长度,用标志也行,不过还是觉得长度好用啊。


关键是用什么标志。

流式套接字上设计协议,最省事的办法是使用文本通讯,以回车为标志。(参看http)

当以回车为标志的时候,你觉得还麻烦吗?
man getline
man fgets


而且你同时回避了诸如“字节序”、“对齐”等若干极易导致BUG的陷阱......

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
23 [报告]
发表于 2008-01-22 20:48 |只看该作者
原帖由 JohnBull 于 2008-1-22 20:37 发表

一个一个说吧:
首先:UDP套接字不必使用长度字段,对不对?

其次,不想和你讨论这个问题。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
24 [报告]
发表于 2008-01-22 20:48 |只看该作者
原帖由 JohnBull 于 2008-1-22 20:47 发表

man getline
man fgets

man lex
man yacc

论坛徽章:
0
25 [报告]
发表于 2008-01-22 20:52 |只看该作者
原帖由 flw 于 2008-1-22 20:48 发表

其次,不想和你讨论这个问题。


UDP数据报的情况本来就不用讨论!
就说“是”还是“不是”就行了。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
26 [报告]
发表于 2008-01-22 20:53 |只看该作者
原帖由 JohnBull 于 2008-1-22 20:52 发表

UDP数据报的情况本来就不用讨论!
就说“是”还是“不是”就行了。

理论上来讲,只让对方回答“是”还是“不是”可以得到任何自己想要的结果。

论坛徽章:
0
27 [报告]
发表于 2008-01-22 20:55 |只看该作者
原帖由 flw 于 2008-1-22 20:48 发表

man lex
man yacc


我们的实现方案应该是简化编程,而不是繁化。

如果对于某种复杂协议,使用les/yacc能够简化设计,为什么不用呢?
而对于多数简单协议,使用fgets/strsep就能解决,为什么要动用lex/yacc呢?

论坛徽章:
0
28 [报告]
发表于 2008-01-22 20:57 |只看该作者
恩,基于文本的协议还是不要长度的好点,不过诸如传文件之类的,不要长度就不好说了吧。

论坛徽章:
0
29 [报告]
发表于 2008-01-22 20:57 |只看该作者

回复 #27 JohnBull 的帖子


不错

论坛徽章:
0
30 [报告]
发表于 2008-01-22 21:00 |只看该作者
原帖由 flw 于 2008-1-22 20:53 发表

理论上来讲,只让对方回答“是”还是“不是”可以得到任何自己想要的结果。


OK,不兜圈子了。

那你就直接谈谈使用UDP实现变长分组通信的方法吧。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP