2015-07-11 27 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) –

相關問題