プロが教えるわが家の防犯対策術!

こんにちは。

現在、UDP通信でネットワーク上の別PCからデータ受信をしているのですが、偶に相手からデータが送られてきた後、こちらからACKを返さない時があります。

UDP通信なので相手にきちんとACKが届いたかの確認は出来ないかと思うのですが、こちらがACKを送ったかどうか確認出来るような関数?API?はないのでしょうか?

もしあるようでしたらご教授お願いします。

A 回答 (2件)

結論から申し上げますと「ありません」



「ACK」と呼んでいますが、UDPから見ればユーザデータの一つに過ぎません。
ですので、ご質問にある「ACKを送ったかどうかを確認する」というのは「あるユーザデータを送ったかどうかを確認する」というのと同じことになります。

しかも、UDPに限らずどのレイヤのプロトコルでもそうですが、通常上位レイヤのデータについて解析する術を持っていません。

つまり、そのユーザデータが「ACK」であることをUDP以下の各レイヤにわからせることはできないことになります。

パケットは常に失われる可能性を持っています。
信頼性を重視したいのであれば、No1 ___noboru___さんの回答にもあるように TCP の使用もご検討されるべきだと思います。

こんな感じでいかがでしょうか。
    • good
    • 0

そんなもの調べてもその後パケットが失われる可能性があるから意味ないのでは?



どうしてもデータが届いたことを保証したいなら自分で ACK を返したりするのをやめて TCP で通信した方がいいです。そうすれば ACK を返したりすることは内部的に行われて通信路は保証されます。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!