Looking for c# Answers? Try Ask4KnowledgeBase
Looking for c# Keywords? Try Ask4Keywords

C# LanguageАсинхронный разъем


Вступление

Используя асинхронные сокеты, сервер может прослушивать входящие подключения и выполнять некоторую другую логику в среднем времени в отличие от синхронного сокета, когда они прослушивают, они блокируют основной поток, и приложение становится невосприимчивым, и он замерзнет, ​​пока клиент не подключится.

замечания

Розетка и сеть

Как получить доступ к серверу за пределами моей собственной сети? Это общий вопрос, и когда его спрашивают, в основном помечены как темы.

Серверная сторона

В сети вашего сервера вам необходимо перенаправить маршрутизатор на ваш сервер.

Для примера ПК, на котором работает сервер:

локальный IP = 192.168.1.115

Сервер прослушивает порт 1234.

Перенаправить входящие соединения на маршрутизаторе Port 1234 на 192.168.1.115

Сторона клиента

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

 _connectingSocket.Connect(new IPEndPoint(IPAddress.Parse("10.10.10.10"), 1234));

Итак, теперь вы создаете запрос на эту конечную точку: 10.10.10.10:1234 если вы сделали порт свойств, перенаправляете ваш маршрутизатор, ваш сервер и клиент будут подключаться без каких-либо проблем.

Если вы хотите подключиться к локальному IP-адресу, вам не придется переносить portforwart, просто изменив адрес loopback на 192.168.1.178 или что-то в этом роде.

Отправка данных:

Данные отправляются в байтовый массив. Вам необходимо упаковать данные в массив байтов и распаковать их с другой стороны.

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

Асинхронный разъем Связанные примеры