作了一个关于Remoting的程序,需要在服务器端和客户端建立连接。但是建立的信道没有办法实现双向通信。希望各位给点意见。在线等,解决即给分!

解决方案 »

  1.   

    TO wtk13(想喝醉的人):我现在只实现了,用两种信道,分别实现两种单向的信息传输。这是server向client侧发送广播信息时,建立信道的代码如下:string serverAddress = "tcp://"+ serverName +":"+ sendPointNum.ToString() +"/BroadCastMessage.soap";
       BinaryServerFormatterSinkProvider serverProvider = new BinaryServerFormatterSinkProvider();
       BinaryClientFormatterSinkProvider clientProvider = new BinaryClientFormatterSinkProvider();
       serverProvider.TypeFilterLevel = TypeFilterLevel.Full;
     
       IDictionary props = new Hashtable();
       props["port"] = 0;
       TcpChannel channel = new TcpChannel(props,clientProvider,serverProvider);
       ChannelServices.RegisterChannel(channel);
     
       watch = (IBroadCast)Activator.GetObject(typeof(IBroadCast),serverAddress);
     
       wrapper = new EventWrapper(); 
       wrapper.LocalBroadCastEvent += new BroadCastEventHandler(OnDataGetFromYsd);
       watch.BroadCastEvent += new BroadCastEventHandler(wrapper.BroadCasting); 
    这是client向server侧发消息时建立信道的代码:
    YsdSendChannel = new TcpChannel(sendPointNum);
       ChannelServices.RegisterChannel(YsdSendChannel);
     
       RemotingConfiguration.RegisterWellKnownServiceType(
        typeof(FaxBusiness),"FaxBusiness.soap",WellKnownObjectMode.SingleCall);
       FaxBusiness.FaxSendedEvent += new FaxEventHandler(OnDataGetFromHost);我想实现信道双向工作,不知道是什么参数设置的不对么?
    请高手指点
      

  2.   

    就是说,我只在网上查到了,单项通信的方法,要么就只能server发广播,要么就只能client订阅server,而且,用了两种完全不同的方法注册信道。而我想实现的是:注册一个信道后,就可以双方互发消息。所以,还请高手们指点,谢谢,万分感谢!
      

  3.   

    To  Flashcom(虫虫) :
    你说的利用事件的那个,可以把一些信息传到客户端么?例如:字符串之类的。有没有例子,能详细说明一下么?万分感谢!麻烦了!
      

  4.   

    服务端的同一个事件可以被多个客户端订阅,哪具体是哪个客户订阅对应的哪个代理链中的代理,我想是可以通过代码实现的,但必须重载事件的声明,例如:
    public event MyDelegate1 Event1 
       {
          add 
          {
             eventTable["Event1"] = (MyDelegate1)eventTable["Event1"] + value;
          }
          remove
          {
             eventTable["Event1"] = (MyDelegate1)eventTable["Event1"] - value; 
          }
       }
    但在MSDN中并没有更详细的说明!!
      

  5.   

    qiaomaipi(乔),你的Email地址,我把一个例子发给你!
      

  6.   

    http://www.cnblogs.com/wayfarer/archive/2004/08/05/30437.html
    这里也有一些详细的资料
      

  7.   

    [email protected]
    再次感谢!
      

  8.   

    http://wapig.cn/forums/426/ShowPost.aspx
    这里有 Remoting广播源码!
      

  9.   

    To  qiezic(破晓):
    这个源码我用过,可是,以这个源码中用的方法,建立和注册信道以后,再如何从客户端向服务器端发送消息,我就不知道如何实现了,请指点一下。
      

  10.   

    To  qiezic(破晓):
    先谢一下!
    是的,在服务器注册提供服务的远程对象这个我确实知道,可是,怎么才能把这两种结合到一起呢?我需要做的是一个可以双向传送的一个程序,我认为这两种是用完全不同的方法建立的信道,所以我就不会做了,很困惑!是想做一个建立了一个信道后,就可以双方通信的东东。
    在你给的例子上,可以再加上  “在服务器注册提供服务的远程对象“这种方法么?
      

  11.   

    你直接在广播那边的添加一个public方法试着在客户端调用!跟广播不同之出在于一个是委托、事件,另一个是远程代理(不知说的有没错)
      

  12.   

    我的问题终于解决了,谢谢大家的帮助,特别是qiezic(破晓),一直以为那样不行的,也没怎么试,真是有够笨的了!幸好,有大家的指点,真是谢谢了,十分感谢,万分感谢!