套接字简单问题python

时间:2011-04-10 08:04:49

标签: python sockets

我正在构建语音信使类型应用程序...我的服务器应用程序应该接收多个连接,并且应该选择一个连接...

我的问题是我不知道如何在我选择一个特定的IP并连接到它之前显示所有连接的IP地址。 我在ubuntu上使用python ...

1 个答案:

答案 0 :(得分:3)

没有API机制允许您在<{em>> accept(2)该连接之前读取潜在连接的对等地址。它在套接字级别不存在,所以它也不会在Python中存在。

如果您希望在应用程序中构建方式过多的操作环境知识,可以始终使用libpcapwinpcap或类似工具来嗅探线路传入流量,但(a)这需要提升权限,这通常是一个可怕的想法(b)与大多数通信服务器任务实际上无关。

tcp_wrappers机制的作用是accept(2)传入连接,在套接字上调用getpeername(2),然后close(2)套接字,如果程序使用tcp_wrappers不应该与那个远程同伴交谈。 (请参阅/etc/hosts.allow/etc/hosts.deny/etc/hosts.optionshosts.allow(5)联机帮助页。)这对客户来说可能很粗鲁,但系统管理员决定禁止与他们交谈,所以友好不是一个非常重要的优先事项。

那么,在已经close(2)连接后,只需accept(2)个连接是否可以接受?如果是这样,您可以使用socket.getpeername()查找远程对等方的IP,执行您需要的操作,然后如果您不应该首先接受连接,请在套接字上调用socket.close()