繁体   English   中英

Python 2.7.8:套接字-TCP套接字中的客户端服务器数据丢失

[英]Python 2.7.8: Socket - Client Server Data loss in TCP socket

我刚开始使用python中的套接字。 我使用以下命令在本地主机中设置了基本的客户端-服务器设置:

对于服务器:

from socket import *
s = socket(AF_INET, SOCK_STREAM)
s.bind(('', 6969))
s.listen(10)
c, a = s.accept()
while c.recv(100000) != '':
    print c.recv(100000)

对于客户:

from socket import *
s = socket(AF_INET, SOCK_STREAM)
s.connect(('localhost', 6969))
while True:
    say = raw_input('Input Text: ')
    s.send(say)

现在,当我发送数据时,一些数据(50%)丢失了,这意味着服务器未接收到它们。

屏幕截图:

在此处输入图片说明

为什么会这样呢?

我可以做些什么来提高效率吗?

在服务器中,您两次调用recv() :首先在while循环条件下,然后在循环体内。 每个recv()会从套接字消耗多达100000字节,因此您实际上是在每秒读取一次数据时都将其丢弃。

尝试以下方法:

from socket import *
s = socket(AF_INET, SOCK_STREAM)
s.bind(('', 6969))
s.listen(10)
c, a = s.accept()

while True:
    data = c.recv(100000)
    if data:
        print data
    else:
        print "Client closed connection"
        break

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM