Py学习  »  Python

Localhost python多变量赋值

Seeven • 5 年前 • 1468 次点击  

我有个小问题。为什么?

s = socket.socket(socket.AF_INET6,socket.SOCK_STREAM) # this is always present

clientsocket,adress = s.accept() 

与此不同吗?

clientsocket = s.accept()
adress = s.accept()

我还有一件事要提。我用调试器检查变量之间的差异,发现 客户端套接字 s公司 具有相同的属性,但是当我试图使用 s公司 而不是 客户端套接字 谢谢。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/56269
 
1468 次点击  
文章 [ 1 ]  |  最新文章 5 年前
Alex
Reply   •   1 楼
Alex    5 年前

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本身是不同的对象。