• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:winsockのポート指定について)

winsockのポート指定について

このQ&Aのポイント
  • winsockを使ったUDPのプログラムにおけるポート指定方法についての質問です
  • UDPサーバで受信側のプログラムとして、sin_portに受信ポート番号を設定し、socketとbindによってソケット生成を行っています
  • 質問者は、1プロセスで複数ポートを対象に受信を行う方法がわからず、アドバイスを求めています

質問者が選んだベストアンサー

  • ベストアンサー
noname#168973
noname#168973
回答No.1

> 1プロセスで複数ポートを対象に受信を行うことは可能なのでしょうか? 可能だと思いますよ。 ## 私は UDP は直接扱ったことが無いので、確信を持っては回答できませんが.. 確か UDP のデータグラムは「HOST IP + ポート番号」の組で識別されたと思うので、ポート番号(と言うか、別のポート番号で開いたソケット)は複数持つ必要があると思います。 そして、それぞれのソケットを別々のスレッドで待機すれば良いのでは無いでしょうか? もしくは、シングルスレッドで行きたいのあれば、UNIX の場合は select() がお決まりですが、Windows の場合はどうでしょうね。まあそれに順ずるものが多分あるはずです。 ## 通常の待機であれば お決まりの WaitFor... 系の API でしょうが、WinSock のハンドルは HANDLE では無く、SOCKET なのでそのまま待機できないかも知れません。その場合、WSA... 系の API を調べてみてください。 ## なんか、WSAAsyncSelect なんていかにもな名前が目に付いたけどどうなんだろ。

taku_pan
質問者

お礼

ありがとうございます。 回答を参考に調べて動かしてみたら、できました。 ・winsockにもselectがあります。 ・シングルスレッドで複数のソケットを作成しました。 ・selectを使う事により、別のソケットをブロックすることなく受信が可能なようです。 ソケット数に限界値があるのかどうかは分かりませんが、 取り合えず希望通りの動作が可能なようでした。 (64ソケット/ポートまで正常動作させることができました。) 解決のヒントとなる回答を頂き感謝します。

関連するQ&A