Remoting在多IP多网卡内外网环境下的问题
Remoting服务器端如果服务器有多块网卡,多个IP地址的情况下会出现客户端callback失败的问题,debug以后发现客户端会callback到服务器端另外一个IP地址(例如外网地址,而不是内网地址)。大家知道一般情况下Remoting服务器端的配置方式如下:
<channel ref="tcp" port="55555">
或者用代码的方式:
IDictionary props = new Hashtable();
props["port"] = 55555;
IChannel channel = new TcpChannel(props, clientProvider, serverProvider);
该问题有几种解决方案:
1. 将Channel绑定到机器名(使用“machineName”),而非IP。但这样要求我们不同网段的客户都能通过同一个DNS名找到这个服务器。 而且使用此属性将覆盖useIpAddress属性设置。
<channel ref="tcp" port="55555" machineName="firewall.yourdomain.com" />
代码方式:
IDictionary props = new Hashtable();
props["port"] = 55555;
props["machineName"] = "firewall.yourdomain.com";
IChannel channel = new TcpChannel(props, clientProvider, serverProvider);
有关“machineName”属性的详细信息,请查阅MSDN:
http://msdn.microsoft.com/en-us/library/c5zztdc3%28VS.80%29.aspx
2. 为服务器每一个IP都开一个Channel,并使用“bindTo”。
有关bindTo属性的详细定义查看MSDN:specify an IP address of the NIC to bind
to when more than one NIC is installed in a machine. This attribute can
only be used in the server side.
配置示例:
<channel ref="tcp" port="55555" bindTo="197.118.137.8">
<serverProviders>
<formatter ref="soap" typeFilterLevel="Full" />
<formatter ref="binary" typeFilterLevel="Full" />
</serverProviders>
</channel>
3. 通过服务器端的Sink取得Client端的IP,并通过手动配置的类似路由表一样的对应表,通过客户端的IP来选择一个正确的服务器IP。
我们可以用 TrackingHandler在服务器端Marshal MarshalByRefObject的时候用一个正确的IP。
实现方法,参考张逸转载的这篇文章:http://www.cnblogs.com/wayfarer/articles/69104.html
Remoting在多IP多网卡内外网环境下的问题的更多相关文章
- 断网环境下利用pip安装Python离线安装包
这几天搞Windows离线断网环境下安装Python包,配置环境,各种坑!做个记录,供以后查询吧. # 生产环境 windows 7 # python 2.7.9 # pip 1.5.2 友情提示:当 ...
- Bat:IP切换,内外网切换,路由设置内外网同时连接
1.IP切换: @echo off ::双冒号表示注释,注释只能单独一行写,@表示不让执行的命令又显示在屏幕上 cls ::清屏 color c ::设置显示字体颜色 set IP=10.10.17. ...
- 记录一下自己总结出来的,在内网环境下使用maven打包的各种方法,包括各种常用的打包方式(一)
(一)内外网代理仓库搭建 想了一下,先用这个MAVEN安装部署的说明随笔,作为自己的第一篇技术帖,往后会陆陆续续将自己研究的心得发出来,留下脚印.希望有大神可以指点 一 .文章主要解决问题说明 1) ...
- 内网环境下为Elasticsearch 5.0.2 添加head服务
背景: 本项目的服务器是内网环境,没有网络,因此需要在离线的环境中,安装head服务. 需要用到的安装包有: node的安装包 elasticsearch的head插件源码 说明:此次只讲述为elas ...
- ArcGIS API for javascript开发笔记(二)——解决ArcGIS Service中的服务在内网环境下无法进行javascript预览问题
感谢一路走来默默支持和陪伴的你~~~ ----------------------------拒绝转载-------------------------------- 1.问题说明 在使用ArcGIS ...
- Centos 7.5 双网卡内外网同时访问路由设置
说明:服务器有两张网卡分别是eth0.eth1,eth0配置内网IP:192.168.1.1/24,eth1配置外网IP:10.1.1.1/24:要求192.168.0.0/16网段走网卡eth0,网 ...
- kali ms17_010 内网环境下渗透笔记
一.先用Router Scan 扫描 看清楚了网络拓扑结构. 二.使用MS17-010批量扫描工具 下载:ms17-010Scan.exe (也可以用kali自带的nmap和ms17-10模块扫) ...
- [Linux]非外网环境下配置lnmp心得
1.安装gcc编译器 基本所有编译安装包都需要gcc编译器,而且编译安装gcc也需要一个编译器,这是一个悖论.所以,这里只能寻求rpm包安装.但是rpm包需要匹配特定的操作系统内核,所以没有一个通用的 ...
- 离线环境下安装ansible,借助有网环境下pip工具
环境 有网的机器(192.168.19.222):rhe65,python2.7.13,pip9.0.1 离线机器(192.168.19.203):rhe65,python2.6 FTP(192.16 ...
随机推荐
- (转)解决WinDbg调试Dump文件不同环境mscordacwks.dll版本问题
解决WinDbg调试Dump文件不同环境mscordacwks.dll版本问题 开发人员提交一个dump文件(Windows Server 2008 R2),当前调试环境Windows Serve ...
- JS JSOP跨域请求实例详解
JSONP(JSON with Padding)是JSON的一种“使用模式”,可用于解决主流浏览器的跨域数据访问的问题.这篇文章主要介绍了JS JSOP跨域请求实例详解的相关资料,需要的朋友可以参考下 ...
- centos 安装cmake 3.3.2
先卸掉本身自带的 cmake 2.8 yum remove cmake cmake版本:3.3.2 安装编译源码所需的工具和库 yum install gcc gcc-c++ ncurses-deve ...
- 图片onerror事件,为图片加载指定默认图片
为图片指定加载失败时显示默认图片,js输出的img对象,onerror是事件,不是属性,所以这样写是不起作用的: var img = $(document.createElement("IM ...
- size_t详细解释
在学习sizeof运算符的时候,它的值类型为size_t,结果在使用printf函数显示的时候,凭空多了很多警告,有点不不理解,为啥搞这么复杂?直接用个int类型多省事? 经过一番搜索和阅读文档,找到 ...
- 单双口RAM
// Quartus II Verilog Template// Simple Dual Port RAM with separate read/write addresses and// singl ...
- 第四篇: python函数续
1.函数的嵌套 函数的嵌套调用:在调用一个函数的过程中,又调用了其它函数 示例1: def bar(): print('from nbar') def foo(): print('from foo') ...
- ubuntu 安装python3.5
wget https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tar.xz xz -d Python-.tar.xz .tar cd Python ...
- Oracle之标示符无效
一.引言 今天使用Oracle客户端执行一条sql语句 order by colname3 结果一直提示标示符无效,以为是自己把列名写错了打开表的列,一个字母一个字母的比对,还是没有错 二.原因及解决 ...
- Struts提交form之后抛出异常java.lang.IllegalArgumentException: The path of an ForwardConfig cannot be null
原因:在ActionForm中使用了ActionErrors,并且ActionErrors中的内容不为空,所以Struts会根据action的配置跳转到input指定的页面.但是我在配置action的 ...