套接字停止通信

时间:2013-11-06 05:28:47

标签: python sockets networking raspberry-pi

我正在Raspberry Pi上运行python 2.7代码,该代码从Arduino接收串行数据,处理它,并通过wifi链接将其发送到Windows框。 Pi连接到以客户端桥接模式运行的Linksys路由器,该路由器通过wifi连接到Windows机箱所连接的另一个Linksys路由器。 Pi中的代码在某些(显然)随机间隔中运行正常,然后从Windows框中无法访问Pi。

我正在Windows机器上运行PUTTY以连接到Pi,当发生故障时,我收到一条消息,指出存在网络错误并且无法访问Pi。从Windows机器Ping到Pi工作正常,直到出现错误,此时它产生“从192.168.0.129回复:目标主机无法访问”。 Pi连接的客户端桥接路由器仍然可以访问。

我在Pi上的网络代码包含在异常处理程序中,当它失败时会显示以下内容:

  

以太网问题:
  Traceback(最近一次调用最后一次):     在模块
中的文件“garage.py”,第108行       s.connect((主持人,港口))
    文件“/usr/lib/python2.7/socket.py”,第224行,在meth
中     return getattr(self._sock,name)(* args)
  错误:[Errno 113]无主机路线
  无

相关的python代码如下:

import socket
import traceback
host = '192.168.0.129'  
port = 31415
设置中的

,以及处理完串行数据后:

try:
    bline = strline.encode('utf-8')
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.connect((host, port))
    s.send(bline)
    s.close()
except:
    print "Ethernet problem: "
    print traceback.print_exc()

strline包含已处理数据的位置。正如我所说的那样,在失败前或多或少可以运行几个小时。有什么想法吗?

编辑:当PUTTY失败时,其错误消息为“网络错误:软件导致连接中止。”

编辑:当界面关闭时,我在dmesg中看到了这一点:

  

[Wed Nov 6 16:53:15 2013] smsc95xx 1-1.1:1.0:eth0:link down
  [Wed Nov 6 16:53:17 2013] smsc95xx 1-1.1:1.0:eth0:link up,100Mbps,full-duplex,lpa 0x45E1

在Pi启动后大约4个小时。这跟在异常的sys.exit()之后。

0 个答案:

没有答案