- - PR -
TcpClientのCloseについて
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-12-09 17:21
お世話になります。
現在、WindowsXPとVB.NETにてTcpClientを作成しています。 TcpServerとしてVB6.0で作成したアプリと通信確認を行おうとしているのですが、 1度TcpClientで接続した後,切断し,再度接続しようとするとエラーとなってしまします。 調べてみると,Client側での切断処理で,VB6.0のServer側にCloseイベントが発生していません。 原因としてはどのようなことが考えるのでしょうか。 参考までに、コードの抜粋を送付いたします。 1) Serverを初期化(VB6.0のアプリ) 2) Clientから接続要求を発行 mTcpClient = New System.Net.Sockets.TcpClient(mServerHost, mServerPort) mNetStm = mTcpClient.GetStream() 3) Clientにて切断 Call mTcpClient.Close() 以上、よろしくお願いいたします。 | ||||
|
投稿日時: 2004-12-09 18:03
サーバー側で、ソケットが閉じられていないのでしょう。
クライアント側で、接続を切断するときに、 サーバー側にそのことを伝え、ソケットを閉じるようにする必要があります。
このためには、「ソケットの片側が閉じられたら、もう片方で、イベントが発生する」という保証が必要です。 ドキュメントのどこかに、そのような記述がありましたか? | ||||
|
投稿日時: 2004-12-09 18:31
Edossonさん
返答ありがとうございました。 まずイベントの件ですが、これはServer側(VB6.0)におけるWinsockのCloseイベントの事です。 [リモートコンピュータが接続を閉じたときに発生します。・・・]と記述されていたので、イベントが発生すると解釈したのですが? それと、私の質問の件ですが、いろいろとテストを行っていてわかったのですが、切断を閉じる際に、 Call mNetStm.Close()とすると,Server側にCloseイベントが発生しました。 この為、現在は Call mNetStm.Close() Call mTcpClient.Close() と記述しています。 これで今のところうまく動作はしていますが、TcpClientのCloseで全てをCloseしてくれないので、なんとなく釈然とはしません。 以上、 |
1