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