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 ...
随机推荐
- js操作时间 加法 减法 计算 格式化时间
Date.prototype.Format = function (fmt) { var o = { "M+": this.getMonth() + 1, //月份 "d ...
- AngularJS ——ngResource、RESTful APIs 使用
这篇文章里,用以下两个情景用例来解释: 保存/持久化 新的数据对象 更新存在的数据对象 代码片段包含了AngularJs代码和Spring MVC代码,以能够让你简单快速的上手. 想要$resourc ...
- 更新Bash路径的缓存
---恢复内容开始--- 1.登陆一个新的vps时候,发现git的版本是1.8的,太久了,于是就源码安装了新的版本2.4. 2.老版本在/usr/bin/git,新版本安装的/usr/local/bi ...
- android.util.DisplayMetrics-获取当前屏幕尺寸信息
方法有两种一: DisplayMetrics metrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMet ...
- 做过的自定义 View
做过的自定义 View android view custom 音频条状图 需求 详细设计 具体实现 音频条状图 需求 音频图 最终效果类似于音频图中的条状图 只是效果模拟,并不监听真实的音频 条的宽 ...
- 数据库设计(七)第三范式(3NF)
In our last tutorial, we learned about the second normal form and even normalized our Score table in ...
- httpd-2.2.22安装
cgi部分共分三部分:html,cgi和服务器(httpd). 首先介绍httpd安装: 1. 软件包:httpd-2.2.22.tar.gz 系统:3.8.0-44-generic #66~pre ...
- Python爬虫框架--pyspider初体验
之前接触scrapy本来是想也许scrapy能够让我的爬虫更快,但是也许是我没有掌握scrapy的要领,所以爬虫运行起来并没有我想象的那么快,看这篇文章就是之前使用scrapy的写得爬虫.然后昨天我又 ...
- C++ 4种强制类型转换
C++的四种强制类型转换为:static_cast.const_cast.reinterpret_cast和dynamic_cast 类型转换的一般形式:cast-name(expression); ...
- java web学习笔记-Servlet篇
Servlet基础 1.Servlet概述 JSP的前身就是Servlet.Servlet就是在服务器端运行的一段小程序.一个Servlet就是一个Java类,并且可以通过“请求-响应”编程模型来访问 ...