簡體   English   中英

半關閉插座會打印壞字符

[英]Half Closing the socket prints bad characters

我的客戶發送一個字符串“ abcd”,然后一半關閉套接字(寫部分)。 我的服務器讀取數據並將其追加到列表(集合)中,直到接收到文件末尾(檢測到半關閉的套接字)。 然后遍歷列表並發送數據。

我的服務器代碼:

while True:
    try:
        sock,address = self.__mySocket.accept()

    except:
        print "Client is dead"
        break
    print "Client connect: " + str(address) 

    collection = []
    while True:
        data = sock.recv()  
        if len(data) == 0:
            break                  
        data = str(data[::-1])
        collection.append(data)

    for val in collection:
        sock.send(val)

sock.close()

客戶端:

sslsock.sendall('abcd\n')
time.sleep(1)                                
sslsock.shutdown(socket.SHUT_WR)

data = ""
while True:
    data = sslsock.recv()
    if len(data) == 0:
        sslsock.close()
        sys.exit(1)

    print data

現在,當我在客戶端上打印數據時,它只是打印垃圾。 我試過用pickle ,也沒有用。 現在,當我注釋掉客戶機上的關閉並圍繞它工作我的服務器時,它工作正常。 打印輸出數據的反面。

在服務器代碼中。 我將for循環放入if len(data)== 0內。 並且,它起作用。 我猜想break語句甚至在外面的While True中都沒有出現。 因此,它從未達到發送的目的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM