从
documentation
套接字。接受()
接受连接。套接字必须绑定到地址并侦听连接。返回值是
(conn,address)其中conn是可用于发送和接收连接数据的新套接字对象,address是绑定到连接另一端套接字的地址。
因此,socket.accept()返回
一对
clientsocket, address = s.accept()
同时分配两个变量。就像
temporary = s.accept()
clientsocket = temporary[0]
address = temporary[1]
但更有效率和可读性。但是,当你这样做的时候
clientsocket = s.accept()
address = s.accept()
关于第二个问题-再次阅读文档:
接受连接。套接字必须绑定到地址并侦听连接。返回值是一对(conn,address),其中conn是
可用于发送和接收连接上的数据,而address是绑定到连接另一端的套接字的地址。
原始套接字表示一个对象,该对象绑定到计算机上的某个端口以接受传入通信。当连接请求到达时
它将代表新创建的通信通道。原始套接字仍然可以用于接受更多连接。所以socket.accept()返回的连接对象和原始socket本身是不同的对象。