社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

Localhost python多变量赋值

Seeven • 5 年前 • 1443 次点击  

我有个小问题。为什么?

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
 
1443 次点击  
文章 [ 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本身是不同的对象。