Как заставить winsock прослушивать определенный порт?
Вопрос
Это должно быть действительно очевидно, но как мне заставить winsock прослушивать определенный порт (получать данные?), я не могу найти метод, который позволяет мне это делать!
Извините, что это, вероятно, так очевидно.
Я пытаюсь создать приложение для чата, которое, очевидно, работает в настройке сервера / клиента.
Решение
Вы связываете сокет, а затем прослушать и принимать подключения. Более подробно описано в Начало работы с WinSock . Существует также хорошее руководство для сокетов BSD, которое вы также должны прочитать.
Для .NET вам, вероятно, нужна система. Net.Sockets.Socket (и это методы Bind / Listen / Accept / Send / Receive) вместо родного WinSock, но концепции те же, поэтому я оставлю все ссылки.
Другие советы
При использовании TCP-сокетов вы связываете, слушаете, принимаете и, в конце концов, получаете recv. Вы можете найти некоторые учебные материалы в здесь или ознакомиться с официальной документацией MSDN. Р>
Winsock API основан на BSD-сокетах UNIX; поэтому они очень, очень похожи. Возможно, вы захотите разобраться в этом. Книга, которую я недавно написал, Сетевое программирование UNIX Ричарда Стивенса, и он объясняет почти все, что нужно знать о сокетах.
Вы можете также рассмотреть возможность запуска сокетов в отдельном потоке для улучшения читабельности и производительности.
Редактировать: как для прослушивания на конкретном порту; это параметр sin.port вашей структуры SOCKADDR_IN.