① python如何判斷和對端Linux主機是網路通
#!/user/bin/(ip):4cmd='ping-n1%s'%ip5outfile='ping.tmp'6ret=subprocess.call(cmd,shell=Ture,stdout=open(outfile,'a+'),stderr=subprocess.STOUT)7ifret==0:8print"%sserverisalive"%ip9else10print"%sserverisdown"%ip1112if'__name__'=='__main__'13ping(192.1.1.1)
② 如何用Python實現實時的網路連接檢測
如果你用的socket包里的那些阻塞介面,當然寫個線程循環監測時間也沒啥,只不過記得在循環內加上個sleep,哪怕是1ms甚至1us的sleep都可以避免CPU被消耗干凈。
如果你所說的接收是死循環式里跑socket.recv,它會在recv里阻塞,按你的說法3分鍾一個心跳包,時間檢測就成了3分鍾一次,不太合適。
更好的辦法自然是通過epoll/poll之類的方式或者asyncio/twisted/tornado之類的非同步回調/協程加時間事件甚至是各種GUI框架的事件循環來啟動你的發送和接收。考慮到以後可能有多設備,顯然利用這些成型的玩意更合理。