我有一個用Python編寫的服務器,它基本上接受來自客戶端的傳入連接,並將從它們接收到的數據送入子進程(每個連接一個實例),然後處理數據並將結果返回服務器,以便它可以將其發送回客戶端。Python子流程:流入和流出
問題是數據正在流入,我需要能夠執行多個讀取/寫入操作而沒有EOF。到目前爲止,我一直沒有想出一個解決方案,使我能夠做到這一點,而不會讓我的服務器程序在閱讀時被阻止。有什麼建議麼?謝謝。
我有一個用Python編寫的服務器,它基本上接受來自客戶端的傳入連接,並將從它們接收到的數據送入子進程(每個連接一個實例),然後處理數據並將結果返回服務器,以便它可以將其發送回客戶端。Python子流程:流入和流出
問題是數據正在流入,我需要能夠執行多個讀取/寫入操作而沒有EOF。到目前爲止,我一直沒有想出一個解決方案,使我能夠做到這一點,而不會讓我的服務器程序在閱讀時被阻止。有什麼建議麼?謝謝。
您可以使用select.select(可在Unix和Windows上使用)。
while True:
rlist, wlist, xlist = select.select([client, proc.stdout], [], [])
到select.select
調用將阻塞,直到該client
插座或proc.stdout
是準備好被讀取。
rlist
保存[client.stdin, proc.stdout]
的子集,該子集準備好被讀取。
其使用示例(儘管對於不同的問題)可以找到here。
這聽起來像你必須建立一個UDP服務器和客戶端。