我想問一下是否有任何方法可以在 Python 中創建一個套接字,使用:
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
然后,在使用之前提取作業系統將生成的埠:
sock.connect((SERVER_IP, SERVER_PORT)
即我的目標是在實際執行 3 次握手之前,找到第一個 SYN 資料包的源埠,該資料包將作為 3 次握手的一部分發送到服務器。
注意:我發現可以使用以下方法找出生成的埠:
generated_port = sock.getsockname()[1]
但是,不幸的是, 的值generated_port是在使用之后設定的sock.connect()。
任何幫助都感激不盡!
uj5u.com熱心網友回復:
本地埠只有在socket系結本地IP和埠后才可用。如果沒有通過呼叫顯式完成,bind將隱式完成做connect。因此,在呼叫之前獲取本地埠必須在此之前connect顯式呼叫bind:
import socket
s = socket.socket()
s.bind(('0.0.0.0',0))
print(s.getsockname()[1])
s.connect((host,port))
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/387696.html
下一篇:客戶端只在發送訊息時監聽服務器
