(toppers-users 2068) Re: パイプライン処理について

ABE Tsukasa abe @ jo.tomakomai-ct.ac.jp
2005年 7月 27日 (水) 08:19:10 JST


協栄エレクトロニクス 村木様

苫小牧高専、情報工学科の阿部です。

私も、舘様が指摘されていたように、一番目と、二度目の GET の
クライアント側のポート番号が、異なることが気になります。
これですと、異なるコネクションとなりますので、クライアント側の
ソケット(?)も、サーバ側の TCP 通信端点も、それぞれ別になると思います。

>> こんにちは、舘と申します。
>> 
>>    このGETメソッド要求は最初のGETメソッドに対するのレスポンスがWEBサー
>>    バから返される前に送信されています。
>> 
>> 最初のGETと二番目のGETではTCP通信端点が異なるようですが、二番目の
>> GETに対応するTCP通信端点の初期化や操作に問題はないでしょうか?
>> また、お使いになられているTCP/IPプロトコルスタックに依存する部分も
>> あるかもしれません。TINETのいずれかのバージョンをお使いということで
>> しょうか?
>> 
>> まずはご確認いただけませんか。
>> よろしくお願いします。
>> 
>> -----Original Message-----
>> From: Kyoei Electronics [mailto:kyoei-info @ kyoei-ele.com] 
>> Sent: Tuesday, July 26, 2005 8:39 AM
>> To: users @ toppers.jp
>> Subject: (toppers-users 2065) パイプライン処理について
>> 
>> 
>> 協栄エレクトロニクスの西川です。
>> 
>> TOPPERSを使用して組み込みのWEBサーバーを作成し始めた初心者ですが、
>> パイプラインの処理で判らないところがありますので、ご教授いただきますよう
>> お願いします。
>> 
>>   HTTP1.1によりWEBサーバを構築していますが、クライアントから連続して二
>> つのGETメソッドが送信されたときに最初のGETメソッドに対してはレスポンス
>> を返せるのですが、二番目のGETメソッドに対してレスポンスを返せない状態が
>> 発生しました。
>> 
>>   調べたところ、クライアント(ポート番号1650)とWEBサーバ(ポート番号80)で
>> 通信していたのですが、GETメソッドが二つ連続して送信されたときには以下の
>> ように通信が行われていました。
>> 
>> ・最初のGETメソッド
>>    クライアント(ポート番号1650)→WEBサーバ(ポート番号80)
>> 
>>    二番目のGETメソッドが送信された後にレスポンスが返されていることを確認
>>    しています。
>> 
>> ・二番目のGETメソッド
>>    クライアント(ポート番号1651)→WEBサーバ(ポート番号80)
>> 
>>    このGETメソッド要求は最初のGETメソッドに対するのレスポンスがWEBサー
>>    バから返される前に送信されています。
>>    このGETメソッドはtcp_rcv_dat()で読み出せませんでした。

TCP 通信端点が異なるので、最初の GET メソッドを処理したタスクで、
tcp_rcv_dat() を実行しても、二番目の GET メソッドのデータを
読み出すことはできないと思います。

クライアント側でも、異なるソケットを使っていないでしょうか?
確認をお願いします。

また、tcpdump などで、IP データグラムが見えるデータがあると
解析もしやすいと思います。

--
.\" 苫小牧工業高等専門学校 情報工学科 教授 阿部 司
.\" E-mail: abe @ jo.tomakomai-ct.ac.jp  TEL/FAX: 0144-67-8937