簡體   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