使用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[0]->getInfo();
    Ice::IPEndpointInfoPtr ipeip = dynamic_cast<Ice::IPEndpointInfo*>(eip._ptr);
    int nport = ipeip->port;
    std::string sip = ipeip->host;
}
时间: 2024-11-12 09:31:45

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

基于IP、端口和FQDN实现虚拟主机

虚拟主机可以实现多站点共存,当站点的访问量不大时,为了节省资源(IP,物理主机),可以将多个站点运行于一台物理主机. 一.基于IP的虚拟主机: 实现虚拟主机必须先将中心主机的配置注释掉,即禁用中心主机,只需要注释DocumentRoot指令对应的行,而后再定义虚拟主机. 基于IP的虚拟主机要求一台物理机上要有多个IP,每个虚拟主机分别监听在不同IP地址上,访问时可以基于虚拟主机的名称也可以使用IP地址的方式在浏览器界面内访问.比如,两台虚拟主机www.a.org和www.b.net,我们的物理主

Java---&gt;判断IP和端口是否可连接

当我们通过IP和端口连接设备时,有时候为了用户体验,我们急需在几秒内给到用户回复信息,而这些就需要一些方法来判断: public void connect(String server, int servPort) throws IOException,UnknownHostException, SocketTimeoutException { InetAddress ad = InetAddress.getByName(server); boolean state = ad.isReachabl

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

华为核心交换机绑定IP+MAC+端口案例 1         案例背景 某网络改造项目,核心交换机为华为S5700,接入交换机为不同型号交换机,如下模拟拓扑,客户端接入交换机1通过Access模式与核心交换机连接,该交换机下只有一个Vlan2 192.168.2.0/24:客户端接入交换机2通过Trunk模式与核心交换机连接,该交换机下有俩个Vlan,Vlan3 192.168.3.0/24 Vlan4 192.168.4.0/24,服务器接入交换机通过Access模式与核心交换机连接,该交换机

相同Ip 不同端口配置Nginx反向代理Apache

相同Ip  不同端口 配置Nginx反向代理Apache(就是Nginx跳转到Apache) 在linux 一经搭建好环境  先后安装了Nginx  和Apache 由于 默认端口都是:80 一般客户请求的服务器端口默认为80  所以Nginx作为静态页端口设置:80 Apache设置端口为:8080(在httpd.conf  文件中修改Listen:8080) 如何跳转: 在nginx.conf中 添加 location / { proxy_pass http://202.85.224.166

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

问题描述: 在设备中有3个NI, ip分别为192.168.1.5/6/7.其中本端192.168.1.6同对端192.168.1.10建立了一个tunnel. 我希望测试tunnel连通性, 对端起一个socket server.本段作为client. 但是如果本端client直接连接,使用的源ip为192.168.1.5,端口随机. 我的迷惑在寻找一个指定ip的函数,在看了python的manual document中socket部分看了一遍后,没有找到这个函数. 随后我意识到我的一个思维误

JAVA判断ip、端口是否可连接

1.判断ip.端口是否可连接 public static boolean isHostConnectable(String host, int port) { Socket socket = new Socket(); try { socket.connect(new InetSocketAddress(host, port)); } catch (IOException e) { e.printStackTrace(); return false; } finally { try { sock

从Http请求中获取客户端ip和端口

import javax.servlet.http.HttpServletRequest; import org.apache.log4j.Logger; public final class InternetProtocol { private static Logger log = Logger.getLogger(InternetProtocol.class); /**  * 构造函数.  */ private InternetProtocol() { } /**  * 获取客户端IP地址

SQLserver2012 tcp/ip 1433端口问题解决方法

很多MSSQL安装完成后,调用1433(默认端口)是失败的,这边详细介绍下解决方法. 一..我们需要在电脑上开启telnet服务,定位问题需要.在cmd下使用telnet,如果报命令不存在说明没有开启.开启方法如下: 控制面板--"点击打开或关闭Windows功能",会弹出Windows功能对话框,我们在里面找到"Telnet服务器"和"Telne客户端"两项,然后将之前的勾选上即可开启对应服务了,打上勾后,要记得点击底部的确认保存哦,如下图:

android配置环境时,adb端口占用问题

配置好开发环境后,首先检查adb端口占用情况,默认adb与eclipse通讯端口为5037,一般装有360或者搜狗的程序都会在连接手机时将该端口占用,需要进行修改 解决ADB端口占用问题 方式一5037为adb默认端口,若5037端口被占用,查看占用端口的进程PIDC:\Users\wwx229495>netstat -aon|findstr 5037  TCP    127.0.0.1:5037         0.0.0.0:0              LISTENING       36