在Python中使用AF_UNIX套接字时,“客户端地址”是什么意思?
sock = socket.socket( socket.AF_UNIX, socket.SOCK_STREAM )
sock.bind( "/tmp/sock" )
sock.listen( 1 )
while True:
connection, client_address = sock.accept()
print( client_address ) # prints : b''
有没有办法在服务器端获取有关已连接客户端的任何信息?
对于UNIX套接字;socket.acept()
会回来的socket, ()
。即:一个空的元组。
您可以通过socket.fileno()
例如查看有关“客户端”套接字的一些信息。
例如,使用修改后的echoserverunix.py:
$ python examples/echoserverunix.py
<registered[*] (<Debugger/* 19377:MainThread (queued=0) [S]>, <EchoServer/server 19377:MainThread (queued=2) [R]> )>
<started[server] (<EchoServer/server 19377:MainThread (queued=1) [R]> )>
<registered[select] (<Select/select 19377:MainThread (queued=0) [S]>, <EchoServer/server 19377:MainThread (queued=2) [R]> )>
<ready[server] (<EchoServer/server 19377:MainThread (queued=1) [R]>, ('/tmp/test.sock', None) )>
<_read[server] (<socket._socketobject object at 0x7fa4c0b8a210> )>
<connect[server] (<socket._socketobject object at 0x7fa4c0b8a1a0> )>
<socket._socketobject object at 0x7fa4c0b8a1a0>
6
()
根据accept()
手册页:
返回值
成功完成后,这些系统调用将返回非负整数,该整数是已接受套接字的描述符。如果出错,则返回-1,并正确设置errno。
因此,在C级别,您将获得Python创建socket
对象的“文件描述符” 。但是,除了文件描述符之外,客户端没有从其连接的对等地址或路径。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句