3
假設我在Python中創建一個UDP套接字,然後使用發送郵件:哪個端口正在使用我的插座
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.sendto(MESSAGE, (DEST_IP, DEST_PORT))
如何找出源端口我的消息是從發送?
(我不想我的套接字綁定到任何特定的端口,但我怎麼找出源端口是用來發送郵件?)
假設我在Python中創建一個UDP套接字,然後使用發送郵件:哪個端口正在使用我的插座
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.sendto(MESSAGE, (DEST_IP, DEST_PORT))
如何找出源端口我的消息是從發送?
(我不想我的套接字綁定到任何特定的端口,但我怎麼找出源端口是用來發送郵件?)
第一getsockname()不出現工作,但第二個呢。因此,也許它並沒有得到有效的值,直到第一次傳輸後:如果沒有綁定UDP套接字
#!/usr/local/cpython-3.3/bin/python
import socket
MESSAGE = b"Hello"
DEST_IP = '127.0.0.1'
DEST_PORT = 12345
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
print(sock.getsockname())
sock.sendto(MESSAGE, (DEST_IP, DEST_PORT))
print(sock.getsockname())
HTH
Help on method getsockname: getsockname(...) method of socket._socketobject instance getsockname() -> address info Return the address of the local endpoint. For IP sockets, the address info is a pair (hostaddr, port).
,自動綁定時發生您第一次發送或接收。所以getsockname()
之後會告訴你分配的端口號。