0
我想創建一個python套接字(或套接字服務器),一旦連接到單個設備,維護一個開放的連接,以便進行定期檢查,看看是否有數據已經送走了。套接字只會偵聽一個連接。維護套接字連接,不規則的數據頻率
例如爲:
def get_data(conn):
response='back atcha'
data = conn.recv(1024)
print 'get_data:',data
if data:
conn.send(response)
s = open_socket()
conn, addr = s.accept()
while True:
print 'running'
time.sleep(1)
get_data(conn)
#do other stuff
一旦服務器套接字綁定和連接已被接受,運行插座塊時一個.recv直到連接的客戶端發送一些數據或關閉其插座。由於我正在等待不規則數據(可能是秒,可能是一天),並且程序需要在此期間執行其他任務,所以這種阻塞是一個問題。
我不希望客戶端關閉其套接字,因爲它可能需要隨時向服務器發送(或接收)數據。是在單獨的線程中運行這個唯一的解決方案,還是有一種簡單的方法來設置客戶端/服務器套接字永久保持連接(並且這是安全的?它將在VLAN上運行),而不會阻塞數據已收到?
非阻塞I/O和異步I/O是兩件不同的事情。 – EJP 2013-03-13 22:15:42
Look [here](http://stackoverflow.com/questions/16745409/what-does-pythons-socket-recv-return-for-non-blocking-sockets-if-no-data-is-r)例子如何使用非阻塞套接字。 – Armali 2014-06-06 12:14:11