Python socket-module: Как изменить локальный порт на стороне клиента?

1

Я хочу получить пакеты из сети, используя TCP/IP в качестве клиента.

С...

connect((TCP_IP, TCP_PORT))

... Я могу изменить порт адреса peer. Но я меняю порт моего локального компьютера?

EDIT: я хочу использовать сетевую карту с четырьмя портами. Сетевая карта подключается к измерительному устройству, которое отправляет много данных. Как я могу увидеть, куда идут данные? Как я могу различать эти четыре порта?

  • 1
    Хм ... Вы можете уточнить? Какой порт вы хотите изменить на локальном компьютере? Если вы подключаетесь к удаленному TCP-порту, какой локальный порт вы хотите изменить?
Теги:
networking
sockets
tcp
port

3 ответа

5

Предположим, что у вас есть сокет с именем sock... use socket.bind()

import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
DESTINATION_ADDR = '1.1.1.1'
SOURCE_PORT, DESTINATION_PORT = 31415, 80
sock.bind(('0.0.0.0', SOURCE_PORT))
sock.connect((DESTINATION_ADDR, DESTINATION_PORT))

Теперь я запускаю tshark (текст wireshark), чтобы увидеть мой трафик на этом интерфейсе...

[mpenning@Bucksnort ~]$ sudo tshark -i eth0 tcp and port 31415
Capturing on eth0
  0.000000 24.19.161.6 -> 1.1.1.1      TCP 31415 > http [SYN] Seq=0 Win=5840 Len=0 MSS=1460 TSV=4228124209 TSER=0 WS=6
 12.000009 24.19.161.6 -> 1.1.1.1      TCP 31415 > http [SYN] Seq=0 Win=5840 Len=0 MSS=1460 TSV=4228127209 TSER=0 WS=6
 36.000010 24.19.161.6 -> 1.1.1.1      TCP 31415 > http [SYN] Seq=0 Win=5840 Len=0 MSS=1460 TSV=4228133209 TSER=0 WS=6
  • 0
    Но я на стороне клиента. Измерительным устройством является сервер.
  • 3
    @ kame, это не имеет значения ... вы также можете bind() до connect()
Показать ещё 3 комментария
2

Четыре физических порта вашего сетевого адаптера не связаны с концепцией логического порта IP (и TCP/IP).

Прежде чем мы сможем помочь вам, укажите, какая конфигурация (например, IP-адрес, подсеть и т.д.) этих физических портов. Возможно, есть способ сделать то, что вы хотите в Python: выберите один из четырех портов для трафика.

0

Вы можете назначить порт клиента TCP/IP, но вы не должны, потому что это не имеет никакого смысла для этого. См. Порт клиента TCP/IP (эфемерный) и порт приложения Client/Server Используйте для объяснения.

  • 1
    Если вы не можете сделать это, почему я могу сделать это в своем ответе ;-)?
  • 0
    @ Майк Пеннингтон: Я явно идиот (или, по крайней мере, тот, кому нужно больше спать) :-)
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню