Python 我的套接字正在使用哪个端口
假设我在python中创建了一个UDP套接字,然后使用以下命令发送消息:Python 我的套接字正在使用哪个端口,python,sockets,Python,Sockets,假设我在python中创建了一个UDP套接字,然后使用以下命令发送消息: sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) sock.sendto(MESSAGE, (DEST_IP, DEST_PORT)) 我如何找出我的消息是从哪个源端口发送的 (我不想将我的套接字绑定到任何特定端口。但是如何找出用于发送消息的源端口?第一个getsockname()似乎不起作用,但第二个起作用。因此,在第一次传输之前,可能无法获得有效值: #
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.sendto(MESSAGE, (DEST_IP, DEST_PORT))
我如何找出我的消息是从哪个源端口发送的
(我不想将我的套接字绑定到任何特定端口。但是如何找出用于发送消息的源端口?第一个getsockname()似乎不起作用,但第二个起作用。因此,在第一次传输之前,可能无法获得有效值:
#!/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())
嗯
有关方法getsockname的帮助:
套接字的getsockname(…)方法。\u socketobject实例
getsockname()->地址信息
返回本地终结点的地址。对于IP套接字,地址为
info是一对(hostaddr,port)。
如果未绑定UDP套接字,则在首次发送或接收时会自动绑定。因此
getsockname()
之后将告诉您分配的端口号
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).