1

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

4

1 回答 1

0

在服务器代码中。我将 for 循环放在 if len(data) ==0 中。而且,它有效。我猜这个 break 语句甚至超出了外部 While True。所以,它从来没有达到发送的地步。

于 2013-04-16T19:33:47.410 回答