关闭套接字的一半打印坏字符

时间:2013-04-14 17:36:26

标签: python networking

我的客户端发送一个字符串“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但也没用。现在,当我在客户端注释掉关闭并在我的服务器周围工作时,它运行正常。它打印发送数据的反向。

1 个答案:

答案 0 :(得分:0)

在服务器代码中。我把for循环放在if len(data)== 0里面。而且,它的工作原理。我猜这个破坏声明甚至突破了外面的真实。所以,它永远不会发送。