- - PR -
.Netリモーティング サーバの切断、再接続
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-09-26 16:55
●●●●●サーバ側●●●●●●●●●●●●●●●●●●●●●
Private SvrCh As Channels.Tcp.TcpServerChannel Private WithEvents REMOTE As ClassRemote sub SV_OPEN() SvrCh = New Channels.Tcp.TcpServerChannel("localhost:10000", 10000) 'サーバチャネルオープン Channels.ChannelServices.RegisterChannel(SvrCh, False) ' Dim re As ObjRef = RemotingServices.Marshal(REMOTE, "SVR") 'リモートインタフェースオープン End Sub Sub SV_CLOSE() Channels.ChannelServices.UnregisterChannel(SvrCh) RemotingServices.Disconnect(REMOTE) End Sub ●●●●●クライアント側●●●●●●●●●●●●●●●●●●●●●●●●● Private rm As RemoteDLL Sub Go() rm = CType(Activator.GetObject(GetType(RemoteDLL), svrAddr), RemoteDLL) '送信先設定 rm.DLLMethod(data) '実際の送信 End Sub ●●●●●●●●●●●●●●●●●●●●●●●●● 以上のようなコードで.NETリモーティングのサーバとクライアントで通信をしているのですが クライアント側から送信後(サーバ側で受信成功を確認してから)、サーバを切断(上記のCloseメソッド) そして再度サーバをオープン(上記のOpenメソッド)したばあい、 10〜15秒程度の間隔を開けてからOpenしないと、 「通常、各ソケットアドレスに対してプロトコル、ネットワークアドレス、またはポートのどれか1つのみを使用できます。」 というエラーになります。 どうも通信後にこちらで切断したつもりになっても、15秒程度パスが残ってしまい、 それでサーバのオープンに失敗するようです。 この再接続の間隔を縮めたいのですがどのような設定が必要なのでしょう [ メッセージ編集済み 編集者: 未記入 編集日時 2007-09-26 16:57 ] | ||||
|
投稿日時: 2007-09-26 18:00
クライアント側のチャネルでポート番号を指定していますか?
ゼロ(自動取得)にすれば新しいポートを使用しますので、 それまで使用していたポートが実際に再利用可能かどうかは問われなくなります。 ただ、ファイアーウォールで特定のポートのみを空けているような場合には、 この方法は使えません。 | ||||
|
投稿日時: 2007-09-26 18:32
クライアントのポートは特に問題なく、その時々で自動的にあいているポートを使用しています。
今回問題になっているのはサーバ側の切断、再接続です。 | ||||
|
投稿日時: 2007-09-27 03:14
同じコードを試してみましたが、再現しません。 |
1