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

转自:https://www.cnblogs.com/fatterbetter/p/4114417.html

 

服务器在创建时使用的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[0]->getInfo();
    Ice::IPEndpointInfoPtr ipeip = dynamic_cast<Ice::IPEndpointInfo*>(eip._ptr);
    int nport = ipeip->port;
    std::string sip = ipeip->host;
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值