请问:REMOTING程序为何内网可以连,到外网却提示远程连接失败?
是不是有什么设置问题?

解决方案 »

  1.   

    具体提示:
    由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。************** 异常文本 **************
    System.Net.Sockets.SocketException: 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。Server stack trace: 
       在 System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress)
       在 System.Net.Sockets.Socket.Connect(EndPoint remoteEP)
       在 System.Runtime.Remoting.Channels.RemoteConnection.CreateNewSocket(EndPoint ipEndPoint)
       在 System.Runtime.Remoting.Channels.RemoteConnection.CreateNewSocket()
       在 System.Runtime.Remoting.Channels.SocketCache.GetSocket(String machinePortAndSid, Boolean openNew)
       在 System.Runtime.Remoting.Channels.Tcp.TcpClientTransportSink.SendRequestWithRetry(IMessage msg, ITransportHeaders requestHeaders, Stream requestStream)
       在 System.Runtime.Remoting.Channels.Tcp.TcpClientTransportSink.ProcessMessage(IMessage msg, ITransportHeaders requestHeaders, Stream requestStream, ITransportHeaders& responseHeaders, Stream& responseStream)
       在 System.Runtime.Remoting.Channels.BinaryClientFormatterSink.SyncProcessMessage(IMessage msg)Exception rethrown at [0]: 
       在 System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
       在 System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
       在 System.IDisposable.Dispose()
       在 TzServerManage.Form1.button3_Click(Object sender, EventArgs e) 位置 行号 73
       在 System.Windows.Forms.Control.OnClick(EventArgs e)
       在 System.Windows.Forms.Button.OnClick(EventArgs e)
       在 System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
       在 System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
       在 System.Windows.Forms.Control.WndProc(Message& m)
       在 System.Windows.Forms.ButtonBase.WndProc(Message& m)
       在 System.Windows.Forms.Button.WndProc(Message& m)
       在 System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
       在 System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
       在 System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
      

  2.   

    Remoting可以连接到外网的.
    我原来用56K的Modem做过测试,在内网里访问外网的Remoting服务器.速度还可以接受.
    我觉得你这个应该是远程对象被回收了.也就是过一定时间过后,服务器自动把这个对象Dispose了.
    你把远程对象的生命周期设置成无限的试试.
      

  3.   

    是不是防火墙问题?也就是不能访问外网这个Remoting的端口?
      

  4.   

    你可以利用RemotingClientProxy.Timeout 属性将超时时间设长一点试试!
      

  5.   

    那不就意味着,外网用Remoting不适合?
      

  6.   

    也不是这样说,要看网络状态,网络不好Remoting比Socket更容易超时,因为Remoting性能比Socket差,还有如果在服务端在外网,而客户端在内网的话,服务器不能主动和客户端通讯。
      

  7.   

    Remoting的Socket会监听所有的IP地址,所以双网卡的问题并不存在!
      

  8.   

    参看:
    http://topic.csdn.net/t/20061027/17/5114600.html
      

  9.   

    找到方法了!IDictionary tcpProperties = new Hashtable();     
      tcpProperties["name"]  =   "tcpBinary";     
      tcpProperties["port"]   =   8888;     
      tcpProperties["rejectRemoteRequests"]   =   false;     
      tcpProperties["bindTo"]   =   外网IP;   //注:使用IP地址绑定时将无法使用其它IP地址连接     
      BinaryClientFormatterSinkProvider   tcpClientSinkProvider   =   new   BinaryClientFormatterSinkProvider();     
      BinaryServerFormatterSinkProvider   tcpServerSinkProvider   =   new   BinaryServerFormatterSinkProvider();     
      tcpServerSinkProvider.TypeFilterLevel   =   TypeFilterLevel.Full;     
      TcpChannel   tcpChannel   =   new   TcpChannel(tcpProperties,tcpClientSinkProvider,tcpServerSinkProvider);     
      

  10.   

    谢谢 ! wzd24(牧野)(衣带渐宽终不悔,为伊消得人憔悴) 
    来这里回个帖!
    http://community.csdn.net/Expert/topic/5572/5572583.xml?temp=.523739
      

  11.   

    谢谢两位,我正在找这个问题的原因,果然如此,补充一下,SAO对象没问题,工厂类可以建立CAO对象,但CAO对象访问就会出问题。没有深入思考过