[英]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.