好像Remoting是无法穿越网关的,除非在网关上开端口映射;
WebService 则是可以的.

解决方案 »

  1.   

    TO:Tigatron(Illidian)
    Remoting和WebService都是使用的HTTP作为协议,两者在机制上有颇多相似之处。怎么可能R不行而W可以。
    你有测试的例子吗?
      

  2.   

    不是不能穿透网关,而是那样的客户机在Internet没有自己的IP
      

  3.   

    TO  Fancimage(faci)
    对 就是这个原因?
    Remoting是通过Url访问的。
    在局域网内的Remoting对象没有Url。
    所以无法访问。
    有什么办法可以解决?
      

  4.   

    我也做过类似的程序,我在一个win2k的lan网络和internet上的pc间互相访问是可行的。不过没有设置网关。
      

  5.   

    简单的答案是:办不到!如果在firewall后面的是服务器,只要设置端口映射就没问题了。但是你现在的要求是把client放在firewall后面,然后要求server(或者其他client)回调client代码。.NET Remoting提供的缺省通道实现,callback不会使用已经建立起来的client->server通道,而是会由server重新生成一个server->client通道。只就要求server建立一个到client的连接... 你知道firewall的作用了,这样的连接是建立不起来的。
      

  6.   

    先打击了你一把,接下来是一线曙光: :)
    理论上说,如果我们抛弃.NET提供的通道,我们自己实现的通道完全可以采用client->server通道进行双向通信。由于建立联接的是client端,所以可以通过firewall,没有任何问题。Server也可以使用同一个通道进行回调...另一线曙光是:已经有人开发了这样的通道:
    http://www.ingorammer.com/Software/OpenSourceRemoting/BiDirTcpChannel.html
    Ingo Rammer是.NET Remoting方面的绝对权威,虽然他声明这个通道只是试验品,在性能方面有问题,但是我相信一般的使用还是可以的。不过,这里只有一个Tcp通道,理论上也可以编写一个http的,但是他没有提供。所以如果要使用这个通道,你必须把Server从IIS里面车出来,并且改成使用Tcp通道。
      

  7.   

    to: qqchen79(知秋一叶 [MS MVP]) 
    因为看到您在其他关于Remoting的帖子中答复。所以有此一问。
    现在正在看您提供的连接。
      

  8.   

    to:Brunhild() 
    你说提及的WIN2k网络是通过什么方式上网的呢。
    不设置网关,也就是不设置代理服务器。那么w2k网络中的每一台机器都在Internet上有独立IP?这样当然是可以的。
    但是现在的网络环境一般都是设置代理或者网关,共享一根ADSL或者光纤什么的。
    我们公司的办公环境就是共享ADSL,代理软件使用的Sysgate4。0。
      

  9.   

    如果remoting客户端不能在局域网内运行。那么P2P项目使用Remoting技术来实现就完全没有针对意义了。
    总不可能要求你的客户使用你提供的软件时的每一台机器都在Internet上有独立IP吧?
      

  10.   

    to: diabloyj(大菠萝)
    我的服务器通过ADSL上网,通过共享internet连接,让其他lan中的PC也可以访问。没有使用代理服务器。lan中的PC当然没有独立的INTERNET IP,他们是通过登记在HOST中的CALLBACK入口来互相访问的。
      

  11.   

    我使用了一下BiDirTcpChannel,可在Internet网的时候它总是自动关闭连接啊。
      

  12.   

    那个下载的package里面应该由实例代码吧?可以运行吗?
    Tcp连接应该不是自动关闭才对。
    那个东东恐怕别人搞不定,如果由问题的话,可以直接写email给[email protected]
      

  13.   

    实例代码在局域网环境一切运行正常。
    可是当我把服务器架设在Internet上,客户端架设在通过网关(代理)访问Internet的局域网内的某pc时,new 服务器Remoting对象后通道就自动注销了。
    我试了知名对象,和客户端激活两种方式都是这样。
      

  14.   

    to: Brunhild() 
      看你的回复,我认为你的remoting服务器和你的remoting客户端都在同一个LAN中。(不知道是不是啊 :))Remoting服务器上装了双网卡(一个连接到ADSL猫,一个连接LAN)。
      如果你不是这种网络环境,请把代码给我看一下。我在楼上说的“服务器架设在Internet上”指的是一台托管服务器,和我们办公LAN没有任何物理连接。
      我的QQ:7182108
    欢迎大家有以教我。
      

  15.   

    "客户端登陆时向服务器注册RemotingClient。在以后的交流中就是客户端之间的点对点交流。"问一下你的点和点是怎么建立连接的,用.net framework 提供的 channel 连 ip 和 port 都得不到,你怎么建立连接呢?
      

  16.   

    ip 都得不到,怎么和找到别的 peer 并建立连接?