- PR -

CLOSE_WAITについて

投稿者投稿内容
ほいみん
会議室デビュー日: 2006/05/17
投稿数: 5
投稿日時: 2006-05-21 12:32
ぽんすさま

返信ありがとうございました。

引用:

ソースのほうですが、このままではコンパイルも通らない状態ですので
printf("waiting...\\n");
の次の行の } は無いものと考えます。



申し訳ありません。これはソース貼り付けの際のこちらのミスです。

ご指摘の部分のソースの修正も含め、色々やってみました。
試行錯誤している際、一度クライアントプログラムを動かしているPCと
サーバープログラムを動かしているPCを逆にしてみようと思い、逆にして
動かしてみました。すると同じプログラムであるにも関わらずCLOSE_WAITは
発生しませんでした。同じソースなのにクライアントとサーバーを変えただけで
結果が違うようになり、ますます混乱してしまいました。

ちなみにFedoracore4がサーバー、RedHat7.2がクライアントの場合にCLOSE_WAITが
発生し、逆にすると発生しませんでした。2種類しか検証してないのでこの辺りは
関係あるのかどうかはわかりませんが・・・

もうしばらく試行錯誤してみようと思います。引き続きご指摘等あればよろしくお願いします。
ぽんす
ぬし
会議室デビュー日: 2003/05/21
投稿数: 1023
投稿日時: 2006-05-21 20:48
いくつかポイントを。

・全く同じ操作を行っているか?
・完全に同一のソースコードであるか?
・gccに-Wallオプションを付けて警告が表示されない、もしくは絶対に問題無いと
 確信できる警告以外表示されないようにすること
・クライアント側はtelnetで操作すると分析しやすい
・tcpdump、ethereal等のツールを使用して、何が起きているのか調べる
・OSがLinuxなら、ポートを使用しているプロセスは、rootユーザで
 「lsof -i:ポート番号」を実行すると分かる
・「あらゆる関数はエラーとなる可能性がある」と思うこと。マニュアルに
 「必ず成功する」と書かれている関数は除く。
 「すべての条件分岐は、望んだとおりの側に行かない可能性がある」と思うこと。

スキルアップ/キャリアアップ(JOB@IT)