def main():
while True:
command = raw_input('COMMAND >> ')
s.sendall(command)
data = s.recv(4096)
print(data+'\n\n')
而我只收到我发送的部分数据。 我已经尝试在s.recv上设置更多字节,但这并没有真正帮助,问题依然存在。
什么似乎是问题?
def main():
while True:
command = raw_input('COMMAND >> ')
s.sendall(command)
data = s.recv(4096)
print(data+'\n\n')
而我只收到我发送的部分数据。 我已经尝试在s.recv上设置更多字节,但这并没有真正帮助,问题依然存在。
什么似乎是问题?
参考文档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
所以,我不能只设置c.send(proc [0:])?每当我收到一个字符串时,我必须检查缺少多少字节? – 2014-11-24 22:28:58
发件人(客户)有责任检查一切已发送,并且接收者(服务器)负责阅读它需要的内容。它看起来像你试图通过一个原始套接字发送结构化数据,你可能想看看使用一个简单的RPC框架,因为这将为你处理很多东西。例如,https://docs.python.org/2/library/xmlrpclib.html – 2014-11-24 22:32:57
姆姆。谢谢。我会仔细研究一下。 – 2014-11-24 22:37:29
你为什么不使用sendall()的客户端部分吗? – Eugen 2014-11-24 22:44:05
试过了,但问题仍未解决。 – 2014-11-24 22:53:50