繁体   English   中英

Python Socket:使用相同的套接字处理多个连接

[英]Python Socket:Handling multiple connection with same socket

我的问题与socket.close()函数有关。 一旦我们在程序中调用它,我们就必须重新设置套接字定义以启动新连接。 这段代码正常,

     import socket
     sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
     result1 = sock.connect_ex(('127.0.0.1',9001))
     sock.close()
     sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
     result2 = sock.connect_ex(('127.0.0.1',8119))
     sock.close()

在每次套接字调用之后,此连接返回“0”作为输出(result1,result2)..但是我需要像这样的东西,

 import socket
 sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
 result1 = sock.connect_ex(('127.0.0.1',9001))
 result2 = sock.connect_ex(('127.0.0.1',8119))
 sock.close()

在这种情况下,result2的输出是非零整数....除了close之外,socket中是否有任何函数,在这两种情况下我都可以使用它来获得零输出....

谢谢

不,你不能连接一个插座两次。 也不清楚为什么你想要。 像第一个例子中那样制作两个插座。

由于您使用的是TCP套接字,因此每个连接需要1个套接字。
这意味着您必须为每个新连接创建一个新套接字,这是您的第一个示例中的情况。

connectclose功能仅适用于与其一起使用的连接。
因此,必须为多个连接使用多个connectclose调用。

例如:

import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock2 = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
result1 = sock.connect_ex(('127.0.0.1',9001))
result2 = sock2.connect_ex(('127.0.0.1',8119))
sock.close()
sock2.close()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM