当前位置:  开发笔记 > 程序员 > 正文

套接字协议基础

如何解决《套接字协议基础》经验,为你挑选了1个好方法。

最近,在阅读Socket Programming HOWTO时,以下部分跳了出来:

但是,如果您计划重新使用套接字进行进一步传输,则需要意识到套接字上没有"EOT"(传输结束).我再说一遍:如果在处理0字节后套接字send或recv返回,则连接已断开.如果连接没有被破坏,你可以永远等待一个recv,因为套接字不会告诉你没有什么可读的(现在).现在,如果你仔细考虑一下,你就会发现套接字的一个基本事实:消息必须是固定长度(yuck),或者是分隔(耸肩),或者指示它们有多长(更好),或者通过关闭连接来结束.选择完全属于你,(但有些方式比其他方式更严格).

本节重点介绍了如何编写套接字"协议"以传递消息的4种可能性.我的问题是,用于实际应用的首选方法是什么?

通常最好在每条消息中包含消息大小(可能在标题中),因为文章或多或少断言?有没有其他方法更可取的情况?



1> Eli Bendersk..:

公共协议要么在标头中指定长度,要么分隔(例如HTTP).

请记住,这还取决于您是使用TCP还是UDP套接字.由于TCP套接字是可靠的,因此您可以确保将所有内容都插入其中.使用UDP,故事是不同的,也是更复杂的.


"既然TCP套接字是可靠的,你可以确定你把所有东西都塞进去了"是一个可怕的错误观念.您可以确定以正确的顺序接收所有内容,并且数据流以您实际打算作为开始的内容开始,但是您永远无法确定它是否在不使用应用程序级协议结构的情况下结束确定.
推荐阅读
凹凸曼00威威_694
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有