【发布时间】:2011-01-23 00:56:06
【问题描述】:
最近,在阅读Socket Programming HOWTO 时,以下部分突然出现在我身上:
但如果您打算重复使用您的套接字进行进一步的传输,您需要意识到套接字上没有“EOT”(传输结束)。我再说一遍:如果一个套接字 send 或 recv 在处理 0 个字节后返回,则连接已断开。如果连接没有断开,您可能会永远等待 recv,因为套接字不会告诉您没有更多要读取的内容(目前)。现在,如果您稍微考虑一下,您就会意识到套接字的一个基本事实:消息必须是固定长度(糟糕),或者是定界(耸耸肩) ),或指示它们的持续时间(更好),或通过关闭连接结束。选择完全由您自己决定,(但有些方法比其他方法更正确)。
本节重点介绍如何编写套接字“协议”以传递消息的 4 种可能性。我的问题是,用于实际应用的首选方法是什么?
通常最好在每条消息中包含消息大小(可能在标题中),正如文章或多或少断言的那样?有没有其他方法更可取的情况?
【问题讨论】:
-
上面的链接坏了。
-
这是关于python socket编程的,新链接是docs.python.org/2/howto/sockets.html