UDP-сервер, который связывает IP-адрес управления обратной связью, не может получить запрос - PullRequest
0 голосов
/ 22 января 2019

Я пишу сервер и клиент udp, используя Python на Linux.Код прост.Когда клиент udp отправляет данные на сервер, сервер отвечает клиенту на сообщение.

Код сервера выглядит следующим образом.

#!/usr/bin/env python

from socket import *
HOST = '10.0.0.12'
PORT = 19998
s = socket(AF_INET,SOCK_DGRAM)
s.bind((HOST,PORT))
print '...waiting for message..'
while True:
    data,address = s.recvfrom(1024)
    print data,address
    s.sendto('this is the UDP server',address)
s.close()

Код клиента выглядит следующим образом.

#!/usr/bin/env python
from socket import *
HOST='10.0.0.12'
PORT=19998
addr=(HOST,PORT)
s = socket(AF_INET,SOCK_DGRAM)
s.connect(addr)
while True:
    message = raw_input('send message:>>')
    s.sendto(message, addr)
    data = s.recv(1024)
    print data
s.close()

IP-адрес хост-сервера является IP-адресом управления обратной связью, его можно показать с помощью следующей команды Linux.

root@localhost:~# ip addr show lo
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet 10.0.0.12/32 scope global lo:mgt
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever

Сервер не может получить запрос от клиента.Я могу пропинговать IP-адрес управления от клиента, но пакет UDP работает неправильно.Однако, если сервер связывает IP-адрес на eth0, модель UDP-сервер / клиент работает правильно.

Я совершенно запутался в этом вопросе.Я надеюсь, что ваши ответы, спасибо!

...