2011-04-10 111 views
0

我建立一個語音信使類型的應用......我的服務器應用程序有望獲得多個連接,並應B中給出的選項選擇一種連接...插座簡單的問題蟒蛇

我的問題是,我不知道如何顯示所有連接的IP地址之前,我選擇一個特定的IP並連接到它.. 我在Ubuntu上使用python ...

+0

我很好奇你的服務器爲什麼不接受所有傳入的連接? – sarnold 2011-04-10 08:06:34

+0

它確實接受...我希望它只接受我根據傳入的IP選擇的一個... – Pawan 2011-04-10 16:51:26

回答

3

沒有API機制,可以讓你閱讀潛在連接之前accept(2)連接。它不存在於套接字級別,所以也不會在Python中。

如果你想建立方式您的操作環境中太多的知識到應用程序,你可以隨時使用libpcapwinpcap或類似工具嗅探線傳入流量,但(一)這需要更高的權限,這通常是一個可怕的想法(b)與大多數通信服務器任務無關。

什麼tcp_wrappers機制確實是accept(2)傳入的連接,調用getpeername(2)在插座上,然後close(2)插座,如果使用該程序的tcp_wrappers不應該與遠程對等談話。 (請參閱/etc/hosts.allow,/etc/hosts.deny/etc/hosts.options,hosts.allow(5)聯機幫助頁。)這可能對客戶很粗魯,但系統管理員決定禁止與他們交談,因此友好並不是一個高優先級。

那麼,是否可以接受簡單的close(2)連接你已經accept(2) ed連接?如果是這樣,您可以使用socket.getpeername()來查找遠程對等方的IP,按照您的需要進行操作,然後在套接字上調用socket.close(),前提是您不應該首先接受連接。

+0

是的,應該爲我做的工作...休息一會實現一些控制邏輯..感謝.. 。 – Pawan 2011-04-10 08:30:42