Я слежу за книгой "Основы сетевого программирования Python".У него есть пример сервера / клиента UDP, который может отправлять сообщения друг другу.Вот как это выглядит
import socket, sys
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
MAX = 65535
PORT = 1060
if 2<= len(sys.argv) <=3 and sys.argv[1] == 'server':
interface = sys.argv[2] if len(sys.argv) > 2 else ''
s.bind((interface, PORT))
print('Listening at {}'.format(s.getsockname()))
while True:
data, address = s.recvfrom(MAX)
print('The client at {} says: {}'.format(address, repr(data)))
msg = 'Your data was {} bytes'.format(len(data))
s.sendto(msg.encode('utf-8'), address)
elif len(sys.argv)==3 and sys.argv[1]=='client':
hostname = sys.argv[2]
s.connect((hostname, PORT))
print('Client socket name is {}'.format(s.getsockname()))
s.send(b'This is another message')
s.settimeout(5.0)
data = s.recv(MAX)
print('The server says', repr(data)) code here
Я запускаю сервер на своей локальной машине:
python listing2-2.py server
Listening at ('0.0.0.0', 1060)
Затем я запускаю свой клиент
python listing2-2.py client 127.0.0.1
Client socket name is ('127.0.0.1', 59535)
The server says b'Your data was 23 bytes'
И всехорошо.Я могу использовать localhost, и это тоже работает.Но если я использую свое имя хоста
python listing2-2.py client <myhostname>
Client socket name is ('127.0.0.1', 45677)
, и время ожидания клиента истечет.Сервер получает сообщение от клиента (я вижу вывод «Это другое сообщение» на стороне сервера), но клиент, похоже, отказывается от сообщения от сервера.Я пытаюсь понять, почему.