Python套接字发送不发送整个字符串

时间:2014-11-24 22:17:35

标签: python string sockets python-2.7 send

当我尝试通过LAN从客户端向服务器发送字符串时遇到问题

客户代码:

def p():
os.system('tasklist > p.txt')
f = open('p.txt', 'r+')
proc = '''
       '''
for line in f:
    proc+=(line+'\b')

c.send(proc)

服务器代码:

def main():
while True:
    command = raw_input('COMMAND >> ')
    s.sendall(command)
    data = s.recv(4096)
    print(data+'\n\n')

我只收到我发送的部分数据。 我已经尝试在 s.recv 上设置更多字节,但这并没有真正帮助,问题仍然存在。

什么似乎是问题?

1 个答案:

答案 0 :(得分:1)

参考文档https://docs.python.org/2/library/socket.html#socket.socket.send"应用程序负责检查是否已发送所有数据;如果仅传输了一些数据,则应用程序需要尝试传递剩余数据。"

检查c.send(proc)的返回值,了解发送的总字节数,并在需要时发送更多。

E.g。如果你要发送100个字符,并且c.send(data)返回40,那么你需要调用c.send(data [40:]),依此类推。

或者,您可能/想要使用sendall:https://docs.python.org/2/library/socket.html#socket.socket.sendall