Ошибка сокета «IP-адрес недопустим в своем контексте» - Python - PullRequest
7 голосов
/ 11 января 2011

Я использую Python 2.6 и Windows Server 2008 .

Сервер имеет два IP-адреса, 1 внутренний, 1 внешний .


Мне нужен Python для использования внешнего IP-адреса, но при этом я получаю следующее:

socket.error: [Ошибка 10049] Запрошенный адрес недопустим в своем контексте


Если быть более точным, я использую команду runserver от Django для тех, кто с ней знаком


Edit:

ipconfig вызывает только внутренний IP-адрес, в то время как все работающие у меня службы без проблем используют внешний IP-адрес!


Есть идеи?

1 Ответ

17 голосов
/ 11 января 2011

Это ошибка, которую Windows выдает, когда вы пытаетесь привязать адрес на локальной машине, который не назначен ни одному из адаптеров на машине. Если ipconfig не показывает его, вы не можете привязать его.

Если внешний адрес находится на маршрутизаторе, который запрашивает NAT с него на внутренний адрес сервера, вы не можете привязать его к нему, потому что он находится на другой машине. Это, наверное, так. Возможно, вы захотите связать с socket.INADDR_ANY (или его эквивалентом в Django). Это будет привязано ко всем адресам, которые сейчас находятся на компьютере.

Также обратите внимание, что если внешний адрес NAT-адрес вашего внутреннего, привязка к внутреннему должно быть достаточно.

...