コネクションを開放するには?

解決


ねいる  2006-12-13 09:56:28  No: 24235  IP: 192.*.*.*

WindowsXP(sp2) + Delphi6 (Ent)にてファイル転送アプリケーションを
作成しています。

サーバー側はサービスアプリケーションとして動作し、TServerSocket
コンポーネントを用いて通信を行います。また、クライアントからの
電文を受信しクライアントへファイルを送信します。
クライアント側は、TClientSocketコンポーネントを用い、サーバー側
への電文送信によりサーバーよりファイルを受信します。
通信方式は、ブロッキング通信です。

クライアント側からClientSocket1.Closeと切断を行っても
ActiveConnections の数が減りません。

また、クライアント側からサーバー側へ切断要求の為の電文を送信し
サーバー側で受信後にClientSocket.Closeを行っても
ActiveConnections の数が減りません。

例えば、クライアントが2台接続されている場合、ActiveConnectionsは「2」と
なりますが、クライアント1台がClientSocket1.Closeを行った場合、
ActiveConnectionsは「1」となってほしいのですが、
ActiveConnectionsは「2」のままです。

ServerSocket.Connections のリストから削除されていない事が問題と思われますが、
どうすれば、コネクションを開放できるでしょうか?

編集 削除
ねいる  2006-12-22 14:36:34  No: 24236  IP: 192.*.*.*

>また、クライアント側からサーバー側へ切断要求の為の電文を送信し
>サーバー側で受信後にClientSocket.Closeを行っても
>ActiveConnections の数が減りません。

サーバー側のスレッド処理内ではActiveConnectionsの数は変わりませんが、スレッドを抜けた後はActiveConnectionsの数が減っていました。

編集 削除