2012-03-01 78 views
2

我有一個用Python編寫的服務器,它基本上接受來自客戶端的傳入連接,並將從它們接收到的數據送入子進程(每個連接一個實例),然後處理數據並將結果返回服務器,以便它可以將其發送回客戶端。Python子流程:流入和流出

問題是數據正在流入,我需要能夠執行多個讀取/寫入操作而沒有EOF。到目前爲止,我一直沒有想出一個解決方案,使我能夠做到這一點,而不會讓我的服務器程序在閱讀時被阻止。有什麼建議麼?謝謝。

回答

2

您可以使用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

0

這聽起來像你必須建立一個UDP服務器和客戶端。