исключение std @ socket_bind при попытке связать сокет в AWS - PullRequest
0 голосов
/ 23 сентября 2018

Я пытаюсь запустить простой сервер сокетов в Amazon Web Services, но получаю сообщение об ошибке при попытке связать сокет следующим образом:

var s:Socket = new Socket();
s.bind(new Host("Public AWS image IP here"), 5000);

Ошибка - исключение std @ socket_bind.Что я делаю неправильно?Я неправильно использую IP-адрес или мне нужно открыть порт 5000?Я начинающий.

UPD: я изменил IP-адрес на 0.0.0.0, сервер успешно запущен, однако клиент все еще не может подключиться к серверу:

s.connect("AWS Public IP", 5000);

Но почему?Как я выяснил, привязка к 0.0.0.0 должна привязать сокет ко всем доступным IP-адресам, и в моей консоли AWS есть правило, разрешающее все подключения к порту 5000

1 Ответ

0 голосов
/ 24 сентября 2018

Если вы пытаетесь связать общедоступный IP-адрес EC2, вы не можете этого сделать, поскольку общедоступный IP-адрес не назначен вашему сетевому интерфейсу.Вы бы связали частный IP-адрес.Экземпляр EC2 ничего не знает об общедоступном IP-адресе, назначенном ему «логически».

Интернет-шлюз AWS (IGW) - это особый тип шлюза NAT от 1 до 1 для сопоставления публичных и частных адресов.Это означает, что общедоступный IP-адрес назначается общедоступной стороне шлюза, а не вашему экземпляру EC2.Ваш экземпляр EC2 получает частный IP-адрес, и это адрес, который вы можете использовать в своем вызове bind().

Однако лучше выбрать привязку 0.0.0.0, поскольку это означает привязку ко всем сетевым интерфейсам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...