Как получить номер порта назначения сокета? - PullRequest
0 голосов
/ 23 марта 2020

Код пытается подключиться к серверу, используя фиксированный номер порта (VRT_PORT), и код выглядит так:

self._sock_scpi = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self._sock_scpi.connect((host, SCPI_PORT))
self._sock_scpi.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, True)
self._sock_vrt = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self._sock_vrt.connect((host, VRT_PORT))

Кстати, это sp inet из код, разработанный производителем, и я не писал этого. И вот часть, которая получает пакеты от сервера:

data = socket.recv(1024, flags)

Код работает нормально, и когда я регистрирую данные на wireshark, я вижу, что серверы всегда отправляют порты на VRT_PORT.

Но вот мой вопрос: мне нужно было бы обработать и перенаправить некоторые пакеты, и мне нужно было бы знать, на какой порт поступают данные? (например, порт назначения TCP)?

Есть ли способ сделать порт приема статическим c? Потому что каждый раз, когда я запускаю приложение python, хотя исходный порт всегда фиксируется на VRT_PORT, но порт назначения всегда меняется ..!

И если это невозможно, сделать его постоянным c, есть ли хотя бы способ узнать номер порта, на котором я буду получать пакеты (до того, как я действительно начну получать пакеты)?

...