2017-01-11 7 views
0

У меня есть простой UDP сервер на Raspberry Pi с ipv6 адрес "2a02: 2C40: 100: A001: 1de0: 4ff6: 5bbd: 5cd9"Python: простой UDP сервер RPI не печатает сообщение

Код для сервера udp:

import socket 
import sys 

# Create a UDP socket 
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 

# Bind the socket to the port 
server_address = ('localhost', 61625) 
print('starting up on {} port {}'.format(*server_address)) 
sock.bind(server_address) 

while True: 
    print('\nwaiting to receive message') 
    data, address = sock.recvfrom(4096) 

    print('received {} bytes from {}'.format(
     len(data), address)) 
    print(data) 

    if data: 
     sent = sock.sendto(data, address) 
     print('sent {} bytes back to {}'.format(
      sent, address)) 

С компьютера Windows я использую средство отправки пакетов для отправки сообщения. Wireshark захватывает это сообщение как:

80876 2260.986515 2a02:2c40:100:a001:d0cc:264f:f203:2ca0 2a02:2c40:100:a001:1de0:4ff6:5bbd:5cd9 UDP 69 61625→61625 Len=7 

и сразу же следует, что с этим ICMPv6 сообщение:

80877 2260.987088 2a02:2c40:100:a001:1de0:4ff6:5bbd:5cd9 2a02:2c40:100:a001:d0cc:264f:f203:2ca0 ICMPv6 117 Destination Unreachable (Port unreachable) 

На самом RPI, я вижу это:

388 10.578376 2a02:2c40:100:a001:d0cc:264f:f203:2ca0 -> 2a02:2c40:100:a001:1de0:4ff6:5bbd:5cd9 UDP 69 Source port: 61625 Destination port: 61625 
389 10.578609 2a02:2c40:100:a001:1de0:4ff6:5bbd:5cd9 -> 2a02:2c40:100:a001:d0cc:264f:f203:2ca0 ICMPv6 117 Destination Unreachable (Port unreachable) 

И мой UdP сервер не печатает ничего, т. е. остается таким, как:

[email protected]:~/git/cerberos_manager $ sudo python3 test_udp_server.py 
starting up on localhost port 61625 

waiting to receive message 

Я понятия не имею, что я делаю неправильно. Любой совет?

ответ

0

Aha! Починил это.

Работа с IPv6, поэтому необходим разъем IPv6.

sock = socket.socket(socket.AF_INET6, socket.SOCK_DGRAM)