- 694 名前:デフォルトの名無しさん mailto:sage [2008/11/02(日) 13:22:14 ]
- UDP通信で質問します。
自分の作成したプログラムだと相手先がない場合、 sendtoの実行時に数秒間ブロックされてしまうのですが、 ping相当のコードは制御がすぐ戻ってきてブロックされないようです。 自分のコード sd = socket(AF_INET, SOCK_DGRAM, 0); sendto(sd, data data_size, 0, (struct sockaddr *)&to, sizeof(to)); ping相当のコード sd = socket(AF_INET, SOCK_RAW, IPPROTO_ICMP); setsockopt(sd, IPPROTO_IP, IP_TTL, &ttl, sizeof(ttl)); sendto(sd, data, data_size, 0, (struct sockaddr*)&to, sizeof(to)); socketに渡すオプションとsetsockoptでTTL値を 設定してる以外は変わらないと思うのですが、 どの設定がブロックに影響しているのでしょうか? 自分のプログラムでも制御をすぐ返すようにしたいのですが、 複雑になりそうなので非同期にはしたくありません。 環境はXP SP2と linuxです。
|

|