先日からいろいろお騒がせしています.
TIdFTPServerを使用しているのですが
通信パケットのやりとりにおいて
相手側からQuitを受け取ると
ACKと同時にFINを送ってしまいます.
相手側の機器はクライアントになり
切断処理はクライアント側から送るものと考えているようで
パケット通信上で見るとQuitのAckをもらった後
Finを送ってきますがこちらはすでにFinを送って終了しているので
相手のFinに対してはAckを返すだけです。
<<現状>>
クライアント −QUIT→ サーバー
←ACK −
←FIN −
−ACK →
−FIN → ※
←ACK − ※
::
※を数回繰り返す
以前はTcpClientとTcpServerを駆使して
FTPServerもどきを作っていたのですが
このときは SetSockOpt を使って
LINGERを利用することで以下のようになります。
<<過去>>
クライアント −QUIT→ サーバー
←ACK −
−ACK →
−FIN →
←ACK −
←FIN −
−ACK →
通信終了
詳しくはわからないのですが
スライドウィンドウ??とかの機能がクライアントには無いようで、
常に3ウェイハンドシェ−クでないとだめなようですね.
聞きたいことはTIdFTPServerを使ってSetSockOPTを使ったり
上記のスライドウィンドウ??のオフをするようなことはできないのでしょうか?
質問ばかりですみません。
現在症状が出なくなりました.
変更はしていないのですけど
何かのタイミングがあるんでしょうか?
また、問題がおこったら質問させていただきます.
ツイート | ![]() |