当我在Rasperi-Pi-Pycharm中运行以下代码时,我收到了一个错误(Python 3.5).但在windows


reply = s.recv(1024)
ip_buying_inter = pickle.loads(reply)
print('Internal Buying Price', repr(ip_buying_inter))
reply = s.recv(1024)
ip_selling_inter = pickle.loads(reply)
print('Internal Selling Price', repr(ip_selling_inter))

错误消息追溯(最近一次通话(:

中的文件"/home/pi/PycharmProjects/Mtecg/test3.py",第73行

ip_selling_inter = pickle.loads(reply)

EOFError:输入用完

无法根据问题中的信息重现问题。但pickle似乎抱怨没有得到足够的数据进行解包,这可能是由于recv没有返回完整的"消息"。

看起来您假设您将通过一个recv获得完整的pickle消息。不需要这样:TCP不是一个消息协议,而只关心字节流。并且发送方的send可能需要接收方站点上的多个recv来重建完整消息。

如果单个recv将返回send中使用的完整消息,这取决于多个因素:连接的延迟、MTU(本地主机上的通信与以太网或WLAN上的通信不同(、系统的速度…-这可能解释了它在Windows上似乎可以使用pycharm,但在RasPi上却不能。

相关内容

最新更新