[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 02/04 09:14 / Filesize : 232 KB / Number-of Response : 915
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

ネットワークプログラミング相談室 Port22



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です。






[ 続きを読む ] / [ 携帯版 ]

全部読む 前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<232KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef