Ответ 1
Клиентский сокет не прослушивает входящие подключения, он инициирует исходящее соединение с сервером. Серверный сокет прослушивает входящие соединения.
Сервер создает сокет, привязывает сокет к IP-адресу и номеру порта (для TCP и UDP), а затем прослушивает входящие соединения. Когда клиент подключается к серверу, создается новый сокет для связи с клиентом (только TCP). Механизм опроса используется для определения того, произошло ли какое-либо действие в любом из открытых сокетов.
Клиент создает сокет и подключается к удаленному IP-адресу и номеру порта (для TCP и UDP). Можно использовать механизм опроса (select(), poll(), epoll() и т.д.) Для контроля сокета для информации с сервера без блокировки потока.
В случае, если клиент находится за маршрутизатором, который обеспечивает NAT (преобразование сетевых адресов), маршрутизатор переписывает адрес клиента в соответствии с общедоступным IP-адресом маршрутизатора. Когда сервер отвечает, маршрутизатор изменяет свой общедоступный IP-адрес обратно на IP-адрес клиента. Маршрутизатор хранит таблицу активных подключений, которую он переводит, чтобы он мог отображать ответы сервера на правильный клиент.