2015-07-11 28 views
1

我刚刚在Python中使用套接字开始。我建立在本地主机一个基本的客户机 - 服务器布置使用以下:Python 2.7.8:套接字 - 客户端服务器TCP套接字中的数据丢失

服务器为:

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%)时丢失我发送它,这意味着它没有被服务器接收。

截图:

enter image description here

为什么是这样?

我可以做任何事情来提高效率吗?

回答

0

在您要拨打的服务器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 
+0

谢谢,它的工作。 (Y) –

相关问题