送信後にAckを受けるには?


ナニータ  2009-01-28 02:40:41  No: 69515

開発環境VS2005 VC++を使用しています。

現在CAsyncSocketを継承したクラスで通信関係の処理をやっています。
連続送信処理を行いたいのです。送信後にAckを受けたら次の送信を行うとかしたいのですが、
Ackの受信確認なんてできませんか?

もし受信確認が出来ない場合はSendが正常に終了したらAckを受けれたと考えていいのでしょうか?

ご教授お願いします。


仲澤@失業者  2009-01-28 03:28:08  No: 69516

まず、TCP/IPは送信データの内容が破壊されずに送信先に
到着することを保障しています。従って、本当にAckが必要か
どうか検討してください。到着データに何らかの加工をしてから、
次のデータの送信要請する場合などのみに必要となるかもしれません。
単にデータの正常性の確認の場合は不要です(全て正常に到着します)。

次にサーバークライアント共、ソケットに対してsend/recvができます。
つまりAckがほしけりゃsendすりゃいいじゃん。てやつです。
この場合のAckとは信号ではなく、意味のある送信データ列をやり
取りすることを意味します。

> もし受信確認が出来ない場合はSendが正常に終了したらAckを受けれたと考えていいのでしょうか?

いいえ、正常に送信が完了したのであって、受信が完了したとは
いえません。ただし、微妙ですが、一般には相手のNICにデータは
到達はしたといっても良いと思いますが、相手がrecvした
かどうかは不明です。


ナニータ  2009-01-28 11:08:14  No: 69517

ありがとうございます。
ソケットに対してsendをすればAckを受けるというのは、
受けた側が、データとしてAckを送信すればいいということでしょうか?

以下、ありがとうございます。なるほどです!
> いいえ、正常に送信が完了したのであって、受信が完了したとは
> いえません。ただし、微妙ですが、一般には相手のNICにデータは
> 到達はしたといっても良いと思いますが、相手がrecvした
> かどうかは不明です。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加