什么是python中Socket.accept()的返回值

ims*_*rch 18 python sockets network-programming

socket在python中创建了一个简单的服务器和一个带有模块的简单客户端.

服务器:

# server.py
import socket

s = socket.socket()
host = socket.gethostname()
port = 1234
s.bind((host, port))

s.listen(5)

while True:
    c, addr = s.accept()
    print 'Got connection from', addr
    c.send('Thank you for your connecting')
    c.close()
Run Code Online (Sandbox Code Playgroud)

和客户:

#client.py
import socket

s = socket.socket()

host = socket.socket()
port = 1234

s.connect((host, port))
print s.recv(1024)
Run Code Online (Sandbox Code Playgroud)

我启动了服务器然后启动了4个客户端并在服务器控制台中输出如下:

Got connection from ('192.168.0.99', 49170)
Got connection from ('192.168.0.99', 49171)
Got connection from ('192.168.0.99', 49172)
Got connection from ('192.168.0.99', 49173)
Run Code Online (Sandbox Code Playgroud)

元组中的第二部分是什么?

Mar*_*ers 16

socket文档:

一对(主机,端口)用于AF_INET地址族,其中host是一个字符串,表示Internet域符号中的主机名,如'daring.cwi.nl'或IPv4地址,如'100.50.200.5',port是整数.

所以第二个值是客户端用于连接的端口号.建立TCP/IP连接时,客户端选择一个外发端口号与服务器通信; 服务器返回数据包将被寻址到该端口号.

  • 这只是一个元组; 使用订阅:`returned_tuple [1]` (2认同)

Ale*_*yev 12

python文档引用:

socket.accept()

接受连接.套接字必须绑定到一个地址并侦听连接.返回值是一对(conn, address),其中conn是可用于在连接上发送和接收数据的新套接字对象,address是绑定到连接另一端的套接字的地址.

address你可以在同一个文档中找到什么来自"套接字地址表示如下".