У меня есть 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: Извините за мой английский:)
Вы можете распечатать значение переменной addr при получении исключения? может быть, что-то глупое с адресом (встроенный канал или что-то в этом роде)
Возможно, безопаснее добавить вызов addr.strip()?