Python 具有創建半連接(half-connected)的能力,這可以通過套接字選項實現。
半連接是指某個套接字監聽另一個套接字的連接請求,但未接受那些請求。這使得我們可以拒絕或允許建立連接,或等待即將到來的連接。
import socket # 創建一個 TCP 套接字 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 開啟半連接模式 s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) s.bind(('localhost', 8000)) # 監聽連接請求 s.listen(1) # 接受連接請求并返回一個新的 TCP 套接字和客戶端地址 conn, addr = s.accept() # 在半連接模式下,我們可以等待或拒絕新連接 is_accepted = False while not is_accepted: print('Waiting for connection...') # 等待連接 conn, addr = s.accept() # 拒絕連接 # conn.close() # 歡迎連接 is_accepted = True # 使用新套接字進行通信 data = conn.recv(1024) print('Received from client:', data.decode()) conn.send('Hello from server!'.encode()) # 關閉套接字 conn.close() s.close()
在上面的代碼中,我們使用 setsockopt() 函數來打開半連接模式,并使用 listen() 函數將套接字設置為等待連接請求。
使用 accept() 函數可以阻塞等待連接請求,返回值是一個新的 TCP 套接字和客戶端地址。在半連接模式下,我們可以選擇接受或拒絕這些請求。
如果接受了連接請求,我們可以使用新的套接字進行通信,最后要記得關閉套接字。
使用 Python 可以輕松創建半連接,這為網絡編程帶來了更多的靈活性。