
UDPの帯域測定プログラムを作成しています。
100個のパケットを受信した後、受信処理を終了させるのに、
endの文字を挿入したパケットを受信することで受信を終わらせようと考えています。
パケットを送信する側は100個のパケットを送信し終えたら、endのパケットを送信します。
受信側はendのパケットを受信したら受信を終了します。
受信側がendを受信したら送信側がendのパケットを送信するのを止めさせたいのです。
UDPではパケットが消失するため、送信側は受信側がendを受け取ったことを確認したあとに送信をやめなければなりません。
endを受け取ったら、合図を返信すればよいと思いますが、その合図が消失することもあるので、「endを受信したら合図を返信する」という処理を終わらせるタイミングも分かりません。
どのようにしてendを受け取ったことを確認すればよいでしょうか?
No.2ベストアンサー
- 回答日時:
> 送信側は受信側がendを受け取ったことを確認したあとに送信をやめなければなりません。
そういう要望が出ている時点で「UDPを使うのは間違い」というか、
そういう用途にはTCPを使うべき、ということになりますが
どうしてもUDPを使いたかったら、
TCP的なハンドシェイクが必要になるでしょう。
それと、最終目的が
> 100個のパケットを受信した後、受信処理を終了させるのに、
なのでしたら、
> パケットを送信する側は100個のパケットを送信し終えたら、endのパケットを送信します。
ではダメでしょう。パケット消失が発生したら、送信側が100個送っても、受信側は100個になりません。
受信側で、100個のパケットを受信し終えたところで、送信側に「受信完了」のパケットを送る必要があります。
たとえば、
・送信側は、受信側から「受信完了」パケットが届くまでは普通のパケットを送信し続ける
・受信側は、100個のパケットを受信し終えたら、以降、パケットを受信するたびに「受信完了」パケットを送信側に送りつける
という処理にすれば、パケット消失が発生しても、いつか消失せずにパケットが届けば最終的には処理が完了します。
inoue_kou様、mtaka2様のアドバイスのおかげで
UDPで受信終了の合図を出して受信終了させることができました。
アドバイスをしていただき、ありがとうございました。
また、質問させていただくと思いますのでその時はよろしくお願いします。
No.1
- 回答日時:
「UDPではパケットが消失する」と認識しているなら、UDPでやる以上完全にコミュニケーションをとる方法はないと思います。
たとえば、もし通信が途中で切れてしまったらどうしますか?
endを送ったのに消失した。と同じ状況になりませんか?
送信側がendを送り、タイムアウト以内に受信側からendを受け取った事の返答が無ければ
測定不能にして処理を終了する方法はダメですか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
TCP/IP通信時のサーバーからの受信
-
ソケットのrecvの戻り値が0
-
UdpClient 送信元のIPアドレ...
-
VB6のwinsockでconnectできない
-
Connectエラーが出てしまう・・...
-
ソケットプログラミングに関す...
-
VB6‥ソケットについて
-
ソケットを用いた1対多通信につ...
-
Macターミナルで実行中のプログ...
-
powershell を使いカレントディ...
-
Windows上で、シグナル(SIGTERM...
-
プロセスIDの取得方法について
-
Excel(VBA)でSetTimer関数を使...
-
C# シリアル通信でデータ受信...
-
win10で、正確な待ち時間の作り方
-
VBSの処理中一旦処理を止めて再...
-
VBA、UserFormを前面に出力して...
-
アプリケーションが終了するま...
-
構文エラーについて教えてください
-
vb.netでEXCEL起動がうまくでき...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
TCP/IP通信時のサーバーからの受信
-
Socket通信の0バイト受信について
-
Winsockで接続待ちタイムアウト...
-
ソケットのクローズについて
-
UDP通信におけるbind関数について
-
VB6のwinsockでconnectできない
-
エクセル VBA でのCOMポート...
-
SIPがNATを越えられない理由
-
ソケットでクライアントのipア...
-
UdpClient 送信元のIPアドレ...
-
ソケット通信 同じポート番号...
-
VC++でのソケット通信について
-
TCP/IPプログラミングでのselec...
-
ソケット通信
-
ソケットのrecvの戻り値が0
-
UDP通信する時に、相手にどうや...
-
vxWorks6.4を使用してソケット...
-
SendRequestでヘッダが受信され...
-
ソケットを用いた1対多通信につ...
-
どうか、POSTでのファイル転送...
おすすめ情報