当我尝试通过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 上设置更多字节,但这并没有真正帮助,问题仍然存在。
什么似乎是问题?
答案 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