winsockを使ったUDPのプログラムを作成しています。開発環境はVC.NET/win2000です。
UDPサーバで受信側のプログラムとして、
・sin_port に受信ポート番号を設定
・socket
・bind
という流れでソケット生成をしています。
上記の流れを1プロセスで1度行って、1プロセスにつき1ポートに対応した
メッセージを受信しているのですが、
1プロセスで複数ポートを対象に受信を行うことは可能なのでしょうか?
・ポート番号を複数指定する
・ソケットを複数生成する など・・・
方法がわかりません。
すみませんが回答をよろしくおねがいします。
No.1ベストアンサー
- 回答日時:
> 1プロセスで複数ポートを対象に受信を行うことは可能なのでしょうか?
可能だと思いますよ。
## 私は UDP は直接扱ったことが無いので、確信を持っては回答できませんが..
確か UDP のデータグラムは「HOST IP + ポート番号」の組で識別されたと思うので、ポート番号(と言うか、別のポート番号で開いたソケット)は複数持つ必要があると思います。
そして、それぞれのソケットを別々のスレッドで待機すれば良いのでは無いでしょうか?
もしくは、シングルスレッドで行きたいのあれば、UNIX の場合は select() がお決まりですが、Windows の場合はどうでしょうね。まあそれに順ずるものが多分あるはずです。
## 通常の待機であれば お決まりの WaitFor... 系の API でしょうが、WinSock のハンドルは HANDLE では無く、SOCKET なのでそのまま待機できないかも知れません。その場合、WSA... 系の API を調べてみてください。
## なんか、WSAAsyncSelect なんていかにもな名前が目に付いたけどどうなんだろ。
ありがとうございます。
回答を参考に調べて動かしてみたら、できました。
・winsockにもselectがあります。
・シングルスレッドで複数のソケットを作成しました。
・selectを使う事により、別のソケットをブロックすることなく受信が可能なようです。
ソケット数に限界値があるのかどうかは分かりませんが、
取り合えず希望通りの動作が可能なようでした。
(64ソケット/ポートまで正常動作させることができました。)
解決のヒントとなる回答を頂き感謝します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(ソフトウェア) PC上のOutlookでIMAPアクセス時の送信が出来ない。Android上では問題なし。 2 2022/09/28 11:22
- ルーター・ネットワーク機器 YAMAHAルータ設定について 1 2022/09/03 16:31
- ファイアウォール ポート開放で利用可能なTCP一覧の中に利用したいTCPが入ってない場合どうすればいいのでしょうか? 2 2022/09/12 10:31
- ルーター・ネットワーク機器 AU光10G回線について 6 2022/07/25 00:12
- プリンタ・スキャナー キャノンmp490プリンター【エラー番号5400】で【プリンタートラブルが発生しました。電源を入れ直 2 2023/07/24 17:45
- ドメイン・サーバー・クラウドサービス スカパー(@skyperfectv.co.jpのドメインメール) POPサーバとポートについて @s 1 2023/07/03 11:43
- その他(メールソフト・メールサービス) Windows10付属のメール、なぜ設定が劇的に簡単になったのか? 1 2022/12/16 13:14
- ルーター・ネットワーク機器 「マルチSIMルーター」について教えて下さい 3 2022/06/24 08:59
- ルーター・ネットワーク機器 10Gbpsの恩恵 5 2022/11/16 15:48
- その他(学校・勉強) この中で間違ってある説明はありますか?詳しい方に教えていただきたいです。 A. 1つのプログラムが複 2 2023/07/14 01:15
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ソケットのrecvの戻り値が0
-
TCP/IP通信時のサーバーからの受信
-
recv関数でフリーズしてしまう
-
UDP通信におけるbind関数について
-
H8のポートの状態
-
UDP通信する時に、相手にどうや...
-
ソケットのクローズについて
-
エクセル VBA でのCOMポート...
-
winsockでファイル転送
-
WINSOCKのWSACleanupについて
-
CreateFile関数でCOMポートが開...
-
VB6‥ソケットについて
-
ソケット通信の送受信遅延-02 ...
-
WinSockでのソケット通信
-
Linuxでsocket接続をしているの...
-
Connectエラーが出てしまう・・...
-
ソケット通信 同じポート番号...
-
Macターミナルで実行中のプログ...
-
ショッピング
-
緯度、経度の 10進法と 60進法...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
TCP/IP通信時のサーバーからの受信
-
UDP通信におけるbind関数について
-
Winsockで接続待ちタイムアウト...
-
recv関数でフリーズしてしまう
-
VB6のwinsockでconnectできない
-
ソケットのクローズについて
-
エクセル VBA でのCOMポート...
-
UDP通信する時に、相手にどうや...
-
ソケットのrecvの戻り値が0
-
UdpClient 送信元のIPアドレ...
-
Socket通信の0バイト受信について
-
WinSockでの通信プログラムがう...
-
同じLAN内パソコンのIPアドレス...
-
ソケット通信 同じポート番号...
-
VC++でのソケット通信について
-
Connectエラーが出てしまう・・...
-
CreateFile関数でCOMポートが開...
-
VB6‥ソケットについて
-
Winsockを使わずにVBでSocketを...
-
SIPがNATを越えられない理由
おすすめ情報