2014-05-19 27 views
1
用TCP套接字接收的所有数据

我想从一个TCP连接的数据使用Python作为编程语言(仅适用于客户端),如何检查是否在Python

不过,我可以看到,所有的数据没有收到一次,并在接收过程中被切断...我可以在论坛上看到,TCP没有以正确的顺序发送数据(这是一个有点随机,链接:Python socket receive - incoming packets always have a different size),我错了吗?

我的问题是,如果有反正确保我正确接收所有数据?

预先感谢您的帮助和答复,

PS:我已经增加socket.recv()的缓冲区大小,但仍面临着同样的问题......而我只是CentOS的

下工作

编辑:(不能回答我的问题:(不过初学者在这个论坛:))

嗨,

非常感谢您的回复,我确实也不必担心TCP连接:)

调查更后,我终于可以找到解决办法......(我正在寻找在这里张贴我的问题前几天),

如果有人需要一个答案,在Python中,你必须等待完整的邮件,否则该信息可以被切割,所以这意味着:

数据= s.recv(1024,socket.MSG_WAITALL) - >的'是在Python代码中创建一个套接字对象,

此致

回答

1

使用套接字API,您不必担心TCP(排序,重传s和whatnot),这一切都被操作系统所照顾。唯一的是socket.recv()将返回最多 n个字节。这意味着不保证您在每个阻塞读取时都会收到n个字节。因此,您必须循环读取,直到您收到所需的字节数。

相关问题