2011-04-10 76 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