Como fazer um winsock escutar uma porta particular?
Pergunta
Esta deve ser muito óbvio, mas como faço para fazer um winsock escutar uma porta específica (receber dados?) Eu não posso encontrar um método que me permite fazê-lo!
Lamentamos que esta é provavelmente tão óbvio.
Eu estou tentando fazer um aplicativo de bate-papo, que é, obviamente, funcionando em uma configuração de servidor / cliente.
Solução
Você ligam o socket, e depois ouvir e aceitar conexões. Descritos em mais detalhes em Começando com WinSock . Há também um bom guia às tomadas BSD, que você deve ler também.
Para .NET, você provavelmente quer Sistema. Net.Sockets.Socket (e é Bind / Ouvir / Aceitar / Enviar / Receber métodos) em vez de WinSock nativo, mas os conceitos são os mesmos, então eu vou deixar todas as ligações.
Outras dicas
Ao usar sockets TCP você ligar, ouvir e aceitar e, eventualmente, recv. Você pode encontrar alguns tutoriais sobre aqui ou confira a documentação oficial MSDN.
A API winsock é baseado em BSD sockets UNIX'; então eles são muito, muito similar. Você pode querer olhar para isso. Um livro que eu tenho recentemente é Rede UNIX Programação por Richard Stevens e ele explica praticamente tudo o que há para saber sobre soquetes.
Você também pode considerar a execução de suas órbitas em um segmento separado para melhorar a legibilidade e performance.
Edit: Como para escutar em uma porta específica; este é o parâmetro sin.port do seu struct SOCKADDR_IN.