投稿日 | : 2005/02/23(Wed) 13:38 |
投稿者 | : yuta |
Eメール | : |
URL | : |
タイトル | : Winsockコンポーネント(切断後の再接続) |
こんにちは、いつもこちらのサイトを参考にさせていただいてます。
早速ですが質問があります。
現在、WinSockコンポーネントを使って、複数のクライアントと接続可能なTCP/IPサーバを作成してい
ます。(VB Enterprise 6.0のSP5です。)
MSDNライブラリを参考にして、複数のクライアントとの接続とデータの送受信はできるようになった
のですが、クライアントの再接続時に「すでにメモリがロードされています。」というエラーが発生
してしまいます。
その後、Closeイベントなどをいろいろデバッグをしてみたのですが、他に接続しているクライアント
の接続が終了してしまったりと、うまくいきませんでした。
どなたかご存知の方がいらっしゃればご教授お願いします。
(下にソースコードを記述しておきます。)
-------------------------------------------------------------------------------------------
※tcpServer …Winsockコンポーネント(Indexプロパティを0に設定。)
※intConnectMax …接続中のクライアントの数(モジュールレベルで宣言)
※Listenなどのイベントは省略しています。
Private Sub tcpServer_Close(Index As Integer)
'接続が切断された
tcpServer(Index).Close '接続しているサーバを閉じる
intConnectMax = intConnectMax - 1 '接続クライアント数を1台分減らす。
Unload tcpServer(intConnectMax) '使用していたコンポーネントを開放する
End Sub
-------------------------------------------------------------------------------------------
Private Sub tcpServer_ConnectionRequest(Index As Integer, ByVal requestID As Long)
'接続要求がきたとき,相手アプリからの接続要求を受け付ける
If Index = 0 Then
intConnectMax = intConnectMax + 1 '接続クライアントの数を一台増やす
Load tcpServer(intConnectMax) '接続要求のあったクライアント用
'サーバコントロールをロードする
tcpServer(intConnectMax).Accept requestID 'クライアントとの接続を受け入れる
End If
End Sub
-------------------------------------------------------------------------------------------
以上です、長文失礼しました。 m(_ _)m