如何在python TCP套接字中调用end()和recv()

时间:2015-12-06 22:45:37

标签: python sockets parsing tcp

我对套接字比较新,对python来说很新。你会如何为python send()和recv()制作一个endmark。

我已经搜遍过,并没有简单的教程。我已经阅读了recv(2)的手册页数千次,而且每次我阅读时都对我不太有意义。

我想在服务器中使用send()函数让客户端在send()结束时调用recv()。

你使用send?的标志参数吗?

或者您使用“|”。join(str1,str2)之类的东西,并在客户端使用if语句来识别|并解析声明?

1 个答案:

答案 0 :(得分:1)

TCP不是面向消息的协议。它不保持消息边界,也不会以其他方式帮助实现它。它是标记边界的应用程序。客户端和服务器可以就交换数据的方法达成一致。常用方法是在您发送的数据中输入消息长度。

[2 byte message length][Actual Data of Interest]

接收数据包的结尾将始终寻找两个字节长度的指示符。 recv尽可能多的数据由长度字节表示,处理它们并再次转到recv长度字节,依此类推。

另一种方法是应用程序可以使用标记标记消息的开头和结尾。它还需要处理标记也可以是实际数据的一部分的情况。

[Start Indicator][Actual Data of Interest][ End Indicator]