Python,等到网络接口启动?

时间:2016-01-27 09:05:02

标签: python sockets raspberry-pi

我有一个python脚本,它打开一个端口并在Raspberry上监听它。我把它添加到/etc/rc.local 一切正常。但我的问题是在执行进程时未创建的套接字。

s = socket.socket()      
s.bind((host_ip,port)) #e.g. host_ip='192.168.1.32' , port=12345
s.listen(5)
while True:
    c,addr = s.accept()
    c.send('ACK')
    c.close()

上述代码未执行,因为没有' eth0'连接可用。我该怎么办?我应该循环扫描套接字状态,直到连接可用吗?还有其他更复杂的解决方案吗?

3 个答案:

答案 0 :(得分:2)

像这样:

mytest<- matrix(c(-10,10), nrow = 1)
mytest2 <- t(mytest)
myfoo <- foo[,c('ping','pong')]
all.equal(myfoo - mytest, myfoo - mytest2)

所以这个答案等于我的评论答案。

答案 1 :(得分:0)

accept()方法会阻塞线程,当没有检测到设备连接服务器时,它会阻塞,意味着accept()之后的代码不会被执行。

答案 2 :(得分:0)

我对Python一无所知,但一般都谈到套接字编程。

  1. 当你倾听时,你不需要任何主持人(s.bind(('',port)))。

  2. 您必须确定在建立连接时引发的函数或事件处理程序(可能是Python中的handle_connect)。

  3. 在处理程序功能中,您将客户端连接到当前正在侦听的端口以外的端口。