• 使用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;
    }
  • 相关阅读:
    《JS权威指南学习总结--6.6属性getter和setter》
    《JS权威指南学习总结--6.5枚举属性》
    django的模板系统
    django额外参数的传递和url命名
    python在图片上画矩形
    当爬虫遇到js加密
    php基础-7
    php基础-6
    php基础-5
    php基础-4
  • 原文地址:https://www.cnblogs.com/fatterbetter/p/4114417.html
Copyright © 2020-2023  润新知