我对套接字比较新,对python来说很新。你会如何为python send()和recv()制作一个endmark。
我已经搜遍过,并没有简单的教程。我已经阅读了recv(2)的手册页数千次,而且每次我阅读时都对我不太有意义。
我想在服务器中使用send()函数让客户端在send()结束时调用recv()。
你使用send?的标志参数吗?
或者您使用“|”。join(str1,str2)之类的东西,并在客户端使用if语句来识别|并解析声明?
答案 0 :(得分:1)
TCP不是面向消息的协议。它不保持消息边界,也不会以其他方式帮助实现它。它是标记边界的应用程序。客户端和服务器可以就交换数据的方法达成一致。常用方法是在您发送的数据中输入消息长度。
[2 byte message length][Actual Data of Interest]
接收数据包的结尾将始终寻找两个字节长度的指示符。 recv
尽可能多的数据由长度字节表示,处理它们并再次转到recv
长度字节,依此类推。
另一种方法是应用程序可以使用标记标记消息的开头和结尾。它还需要处理标记也可以是实际数据的一部分的情况。
[Start Indicator][Actual Data of Interest][ End Indicator]