Python socket-module: Как изменить локальный порт на стороне клиента? - PullRequest
1 голос
/ 06 июня 2011

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

С ...

connect((TCP_IP, TCP_PORT))

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

РЕДАКТИРОВАТЬ: я хочу использовать сетевую карту с четырьмя портами. Сетевая карта подключена к измерительному устройству, которое отправляет много данных. Как я могу увидеть, куда идут данные? Как я могу различить эти четыре порта?

Ответы [ 3 ]

5 голосов
/ 06 июня 2011

Предположим, у вас есть сокет с именем 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
2 голосов
/ 06 июня 2011

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

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

0 голосов
/ 06 июня 2011

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

...