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


ナニータ  2009-01-27 17:40:41  No: 69515  IP: 192.*.*.*

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

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

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

ご教授お願いします。

編集 削除
仲澤@失業者  2009-01-27 18:28:08  No: 69516  IP: 192.*.*.*

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

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

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

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

編集 削除
ナニータ  2009-01-28 02:08:14  No: 69517  IP: 192.*.*.*

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

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

編集 削除