Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我的套接字正在使用哪个端口_Python_Sockets - Fatal编程技术网

Python 我的套接字正在使用哪个端口

Python 我的套接字正在使用哪个端口,python,sockets,Python,Sockets,假设我在python中创建了一个UDP套接字,然后使用以下命令发送消息: sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) sock.sendto(MESSAGE, (DEST_IP, DEST_PORT)) 我如何找出我的消息是从哪个源端口发送的 (我不想将我的套接字绑定到任何特定端口。但是如何找出用于发送消息的源端口?第一个getsockname()似乎不起作用,但第二个起作用。因此,在第一次传输之前,可能无法获得有效值: #

假设我在python中创建了一个UDP套接字,然后使用以下命令发送消息:

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).