使用ICE进程间通信时,IP和端口的选择

服务器在创建时使用的Endpint格式为

tcp  -h IP地址 -p 端口

1、IP地址的选择

如果填某个网卡的地址,则只在这个地址上监听,客户端必须连这个IP才能连通,通常情况下,不同机器之间互相调用一般用0.0.0.0,表示在所有网卡上监听

如果只在同一机器上不同进程之间通信,建议服务器监听IP使用127.0.0.1,客户端在连接时也用127.0.0.1,这样的好处是,默认防火墙不会弹出是否允许的警告

2、端口的选择

一般情况下,服务器创建的服务的IP是固定的,所以端口号可以直接固定写死,这样才能保证客户端知道如何找到服务器

特殊情况下,为防止端口被占用,服务器也可指定端口号为0,让系统分配一个空闲的端口来起服务,然后服务器将该端口记录在特定位置(e.g.共享内存),客户端先从中取到端口后再连接服务器并调用

当指定端口为0时,系统分配一个空闲端口,获取端口的代码如下

Ice::CommunicatorPtr g_communicator;

void startMyIce()
{
g_communicator = Ice::initialize();
Ice::ObjectAdapterPtr adapter = g_communicator->createObjectAdapterWithEndpoints("WsICEService", "tcp -h 127.0.0.1 -p 0"); Ice::EndpointSeq es = adapter->getEndpoints();
Ice::EndpointInfoPtr eip = es[]->getInfo();
Ice::IPEndpointInfoPtr ipeip = dynamic_cast<Ice::IPEndpointInfo*>(eip._ptr);
int nport = ipeip->port;
std::string sip = ipeip->host;
}

使用ICE进程间通信时,IP和端口的选择的更多相关文章

  1. python - socket - client端指定ip和端口

    问题描述: 在设备中有3个NI, ip分别为192.168.1.5/6/7.其中本端192.168.1.6同对端192.168.1.10建立了一个tunnel. 我希望测试tunnel连通性, 对端起 ...

  2. 理解ip和端口

    理解IP和端口 IP地址是一个规定,现在使用的是IPv4,既由4个0-255之间的数字组成,在计算机内部存储时只需要4个字节即可.在计算机中,IP地址是分配给网卡的,每个网卡有一个唯一的IP地址,如果 ...

  3. 同IP不同端口Session冲突问题

    同IP不同端口Session冲突问题 分类: tomcat2013-09-24 11:19 1146人阅读 评论(0) 收藏 举报 一个服务器上搭建了多个tomcat或者weblogic,端口不一样, ...

  4. CentOS6.5 配置防火墙+允许指定ip访问端口

    参考博文: iptables防火墙只允许指定ip连接指定端口.访问指定网站 一.配置防火墙 打开配置文件 [root@localhost ~]# vi /etc/sysconfig/iptables ...

  5. Docker容器绑定外部IP和端口

    Docker允许通过外部访问容器或者容器之间互联的方式来提供网络服务. 以下操作通过myfirstapp镜像模拟,如何制作myfirstapp镜像请点击此处. 1.外部访问容器容器启动之后,容器中可以 ...

  6. 华为核心交换机绑定IP+MAC+端口案例

    1         案例背景 某网络改造项目,核心交换机为华为S5700,接入交换机为不同型号交换机,如下模拟拓扑,客户端接入交换机1通过Access模式与核心交换机连接,该交换机下只有一个Vlan2 ...

  7. php中session同ip不同端口的多个网站session冲突的解决办法

    在局域网内使用IP加端口的访问方式搭了两个相同程序的站,结果发现用户在一个站下登录后,在另一个站也同时登录了,在一个退出后,另一个站也同时退出了.看了下程序发现两个站都是使用纯session方式记录登 ...

  8. Golang client绑定本地IP和端口

    有时需要指定网络通信时本地使用的IP地址和端口号. 在Go语言中可通过定义 Dialer 中LocalAddr 成员实现. Dialer结构定义如下: // A Dialer contains opt ...

  9. 多网卡下对ServerSocket以TCP协议绑定IP和端口的测试

    一.引言:之前开发TCP协议的程序(C#里是Socket为主)都是基于主机上只有一个IP的,后来项目里涉及到了主机需要同时连接内外和外网的情况,在该主机上部署着一套WCS系统和一套WMS系统:WCS系 ...

随机推荐

  1. (转) int argc, char* argv[] 的用法

    int main(int argc, char* argv[]) 這兩個參數的作用是什麼呢?argc 是指命令行輸入參數的個數,argv存儲了所有的命令行參數.假如你的程式是hello.exe,如果在 ...

  2. UnSupported Encoding错误

    学习struts2的时候碰到tomcat报错:org.apache.jasper.JasperException: Unsupported encoding:  UTF-8,原因是jsp文件中的pag ...

  3. javascript在不同的浏览器处理事件

    实现javascript事件处理兼容问题,例子如下,可以实现大部分浏览器处理事件的问题 var btn = document.getElementById("btn"); if(b ...

  4. Android实现点击事件的4种方式

    一.通过在activity_main.xml中,按钮button控件中添加onclick事件实现 在   activity_main.xml 对应的按钮Button中加入下面红色事件 <Butt ...

  5. Yii2.0 UrlManager

    服务器软件的配置与1.0一致即可.. 在组件中进行如下配置: 'urlManager' => [ 'enablePrettyUrl' => true, 'showScriptName' = ...

  6. Bone Collector II(HDU 2639 DP)

    Bone Collector II Time Limit: 5000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others ...

  7. fence repair(队列水过)

    Fence Repair Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 32916   Accepted: 10638 点我 ...

  8. mysql----innodb统计信息

    对innodb 统计信息的控制可以通过如下几个常用的variables 来实现 1.innodb_stats_persistent: 这个参数控制着innodb的统计信息是否持久化到磁盘,先说明一下持 ...

  9. 添加鼠标右键菜单项(EditPlus为例)

    下载Editplus,发现大多是绿色版,这就导致鼠标右键快捷菜单了,使用起来不方面,上网搜集了下资料,解决方法很简单: 首先进入注册表:regedit 然后如图设置新项. 其中editplus是右键菜 ...

  10. [WPF]ListView点击列头排序功能实现

    [转]   [WPF]ListView点击列头排序功能实现 这是一个非常常见的功能,要求也很简单,在Column Header上显示一个小三角表示表示现在是在哪个Header上的正序还是倒序就可以了. ...