2009年11月23日月曜日

asioのudp

 うーん…。udp で組み直してるけど、udp socket の async_receive, async_send が、どうにも思うように動作してくれない…。しかも、free function の async_read も udp の socket には対応していないみたいで、エラーになってしまった。
 そんな訳で、N2175 を印刷して、まじめにチェックする事に…。

 udp の場合

   async_receive_from 任意のクライアントから受信する
   async_receive 一旦受信して endpoint の確定したクライアントから受信する
   async_send_to 送信先を指定して送信する
   async_send 一旦送信して endpoint の確定した所へ送信する

という理解が間違っているのか…? async_receive_from と async_send_to は、ちゃんと動作するんだけどなぁ?udp って、セッションレスなんでしょうか? packet の構造調べてみたけど、セッションレスには思えないっす…。うーむ…。

2009/11/24 追記: どうやら、udp の場合 tcp と違って、ack を返さないので、通信のタイミングがシビアなようである。当たり前と言ってしまえば、それまでの事ですが…  間に std::cout << "hoge" << std::endl というようなコードを挟んでやると、通信できるようになったりしました。

0 件のコメント: