Python UDP сокеты в Windows (не может отправить MSG на сервер, если запустить его в командной строке (в IDE отправки в порядке))

1

У меня есть ploblem с поддержкой сокетов в моем приложении python. Я использую python32. Окна ОС 7. В моей задаче я должен использовать сокеты UDP. Если я запускаю свое приложение из среды IDE (Eclipse), между клиентом и сервером все в порядке.

НО: если я запустил мое приложение в Command Promtp, а затем я не могу общаться с клиентом на сервер (get errno 11004 getaddrinfo не удалось). В Windows XP приложение работает нормально. Я пытаюсь отключить брандмауэр, но это не помогает. Почему я не могу общаться с cmd?

Клиентское соединение:

try:
    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    s.settimeout(15)
except socket.error as msg:
    print(msg)
    s.close()
    s = None

addr=(HOST,int(PORT))
msg="CONNECT"
s.sendto(bytes(msg,"ascii"),addr)
try:
    data = s.recvfrom(1024)[0]
except socket.timeout as err:
    print("Connection lost! /cry")
    sys.exit(1)

и код сервера:

try:
    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
except socket.error as msg:
    print(msg)
    s = None

s.settimeout(45)
s.bind(('0.0.0.0',PORT))

if s is None:
    print('could not open socket')
    sys.exit(1)
print("Server created. Waiting for player.")
sost = "Server"
while True:
    try:
        (data,addr) = s.recvfrom(1024)
    except socket.timeout as err:
        print("Nobody want to connect! /cry")
        sys.exit(1)

    if data == b"CONNECT":
        print("User from {0} connected".format(addr))
        s.sendto(b"CONNECT_OK",addr)
    break;

PS: Извините за мой английский:)

Теги:
sockets
udp

1 ответ

1

Вы можете распечатать значение переменной addr при получении исключения? может быть, что-то глупое с адресом (встроенный канал или что-то в этом роде)

Возможно, безопаснее добавить вызов addr.strip()?

  • 0
    Спасибо! Я не могу себе представить, что проблема с этим, потому что в XP и в отладчике работа в порядке. ADDR состоит из («10 .20.213.5», 43212). Но почему "г" добавлено?
  • 0
    Получаете ли вы этот адрес из пользовательского ввода? Концы строк иногда могут быть неприятными ...
Показать ещё 3 комментария

Ещё вопросы

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