我用Remoting建立客户端与服务端的通信。我发现一个现象,如果服务端没启动或网络有问题的话,造成客户端连接不上服务端,之后,如果启动了服务端,
客户端再次连接,总是连接不上,只有退出客户端,重启一次客户端,才能连上服务端。请问这种现象怎么解决?让客户端不退出,即在服务端启动后就可以连接上。

解决方案 »

  1.   

    Remoting是服务器端向客户端发送一个进程编号,一个进程域编号,以确定对象的位置。
    所以出现你那个问题是正常的,只能先开服务器端,再开客户端,或者保障2者都开了再进行连接。
      

  2.   

    如果连接失败,就释放客户端, 重新new 一个客户端就好了
      

  3.   

    从IChannel中移除已注册的通道
    重新new一个,并注册
      

  4.   

    试过从IChannel中移除已注册的通道,但还是不行。
    声明一下,我是用ChannelServices.UnregisterChannel移除的,不知是否正确.
      

  5.   

    这个还不是等于在服务端启动后重新启动客户端。
    Remoting本来就得先启动服务端,再启动客户端的。这也符合应用上的逻辑啊。
    你可以把服务端做成windows服务,开机启动自动启动服务。就避免了先启动客户端这种情况。
      

  6.   

    注销通道: 
               IChannel[] channels = ChannelServices.RegisteredChannels;            //关闭指定名为MyTcp的通道;
                foreach (IChannel eachChannel in channels)
                {
                    if (eachChannel.ChannelName == "MyTcp")
                    {
                        TcpChannel tcpChannel = (TcpChannel)eachChannel;                    //关闭监听;
                        tcpChannel.StopListening(null);                    //注销通道;
                        ChannelServices.UnregisterChannel(tcpChannel);
                    }
                }