zoukankan      html  css  js  c++  java
  • 使用ICE进程间通信时,IP和端口的选择

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

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

    tcp  -h IP地址 -p 端口

    1IP地址的选择

    如果填某个网卡的地址,则只在这个地址上监听,客户端必须连这个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;
    }
  • 相关阅读:
    [Docker][ansible-playbook]3 持续集成环境之分布式部署
    [Jenkins][GitHub]2 持续集成环境初探
    [Jenkins][centos]1 持续集成 之 配置VNC,部署Jenkins
    [AWS][GUI][VNC]rhel 7 安装GUI ,配置VNC
    [Git]checkout 指定版本
    [Golang][Mac]Go 语言学习资料记录
    App测试札记
    摘记:代码检查错误列表
    摘记:Web应用系统测试内容
    摘记:LoadRunner
  • 原文地址:https://www.cnblogs.com/fatterbetter/p/4114417.html
Copyright © 2011-2022 走看看