当我在Rasperi Pi Pycharm中运行下面的代码时,我得到了一个错误(Python3.5)。但在windows Pycharm中运行良好
错误消息 回溯(最近一次呼叫最后一次): 文件“/home/pi/PycharmProjects/Mtecg/test3.py”,第73行,在当我在Rasperi Pi Pycharm中运行下面的代码时,我得到了一个错误(Python3.5)。但在windows Pycharm中运行良好,python,sockets,pickle,communication,eoferror,Python,Sockets,Pickle,Communication,Eoferror,错误消息 回溯(最近一次呼叫最后一次): 文件“/home/pi/PycharmProjects/Mtecg/test3.py”,第73行,在 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)
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))
EOFError:输入不足无法根据问题中的信息再现问题。但是pickle似乎抱怨没有获得足够的数据来解包,这可能是由于
recv
没有返回完整的“消息”
看起来您假设您将通过一个recv
获得完整的pickle消息。不需要这样:TCP不是消息协议,只关心字节流。发送方的send
可能需要接收方站点上的多个recv
,以便重建完整的消息
如果单个recv
将返回send
中使用的完整消息,则取决于多个因素:连接延迟、MTU(本地主机上的通信与以太网或WLAN上的通信不同)、系统速度…-这也许可以解释它似乎在Windows上与pycharm一起工作,但在RasPi上却不起作用
ip_selling_inter = pickle.loads(reply)