Once a proxy has been associated with a connection, the proxy’s default behavior is to continue using that connection for all subsequent requests. In effect, the proxy caches the connection and attempts to use it for as long as possible in order to minimize the overhead of creating new connections. If the connection is later closed and the proxy is used again, the proxy repeats the connection-establishment procedure described in Section 37.3.1.
37.3.1 Endpoint Selection
A proxy performs a number of operations on its endpoints before it asks the Ice run time to supply a connection. These operations produce a list of zero or more endpoints that satisfy the proxy’s configuration. If the resulting list is empty, the application receives NoEndpointException to indicate that no suitable endpoints could be found. For example, this situation can arise when a twoway proxy contains only a UDP endpoint; the UDP endpoint is eliminated from consideration because it cannot be used for twoway invocations.
The proxy performs the following steps to derive its endpoint list:
1. Remove the endpoints of unknown transports. For instance, SSL endpoints are removed if the SSL plug‑in is not installed.
2. Remove endpoints that are not suitable for the proxy’s invocation mode. For example, datagram endpoints are removed for twoway, oneway and batch oneway proxies. Similarly, non-datagram endpoints are removed for datagram and batch datagram proxies.
3. Perform DNS queries to convert host names into IP addresses, if necessary. For a multi-homed host name, the proxy adds a new endpoint for each address returned by the DNS query.
4. Sort the endpoints according to the configured selection type, which is established using the ice_endpointSelection factory method. The default value is Random, meaning the endpoints are randomly shuffled. Alternatively, the value Ordered maintains the existing order of the endpoints.
5. Satisfy the proxy’s security requirements:
1. If Ice.Override.Secure is defined, remove all non-secure endpoints.
2. Otherwise, if the proxy is configured to prefer secure endpoints (e.g., by calling the ice_preferSecure factory method), move all secure endpoints to the beginning of the list. Note that this setting still allows non-secure endpoints to be included.
3. Otherwise, move all non-secure endpoints to the beginning of the list.
If connection caching is enabled (see Section 37.3.4) and the Ice run already has a compatible connection (see Section 37.3.3), it reuses the cached connection. Otherwise, the run time attempts to connect to each endpoint in the list until it succeeds or exhausts the list; the order in which endpoints are selected for connection attempts depends on the endpoint selection policy (see page 1775).
There are situations in which this default caching behavior is undesirable, such as when a client has a proxy with multiple endpoints and wishes to balance the load among the servers at those endpoints.
分享到:
相关推荐
在Ice连接中,有两种基本的通信模式:同步和异步。同步通信模式下,客户端发送请求后会等待服务器的响应,直到收到回应才会继续执行后续操作;而在异步模式下,客户端发送请求后可以立即返回,无需等待服务器的响应...
- **Multiplexer**:负责多路复用,允许多个ICE连接共享同一套网络资源。 5. **安全性与认证** ICE提供了强大的安全特性,包括SSL/TLS加密、身份验证和授权。在`src/protocol`目录下,可以看到与安全相关的实现。...
#### 五、Multi-ICE连接与调试 - **默认连接方式**:默认情况下,Multi-ICE通过并口连接。如果使用USB接口,则需安装额外的驱动程序。 - **运行Multi-ICE Server**: - 连接好硬件后,运行Server软件。 - 默认...
2. **客户端代码**:客户端代码演示了如何通过ICE连接到服务器,调用其发布的服务,并接收返回的结果。 3. **配置文件**:可能包括ICE的配置文件,用于设置服务器地址、端口、安全选项等。 4. **运行脚本或说明**...
这可能是一个简单的客户端程序,通过ICE连接到服务器,调用服务接口并验证返回的结果。测试对于确保服务端代码的正确性和性能至关重要。 7. **并发与多线程**:ICE支持多线程模型,因此服务端可能采用了线程池或者...
这篇内容将详细介绍如何在Android应用中连接并使用ICE服务。 首先,我们要理解ICE的基本概念。ICE是由ZeroC公司开发的一种中间件,它提供了跨语言、跨平台的RPC(Remote Procedure Call)框架,使得应用程序能够...
1. **与PC机连接**:通过USB接口将AVR JTAG ICE连接到PC机,系统会自动识别新硬件并安装相应的驱动程序。 2. **与目标电路板连接**:至少需要6根线连接目标板与仿真器,包括TCK、TDO、TDI、TMS、VTREF和GND。可选...
- `Client.py`作为客户端,通过ICE连接到服务器,调用`Printer`服务的方法。 6. **笔记和示例**: `note.txt`可能包含了关于如何运行和使用这些文件的说明,或者是开发过程中的注释和心得。`Demo`可能是演示程序...
具体来说,当AVR JTAG ICE连接到计算机并通过AVR Studio进行操作时,如果AVR Studio版本过旧或者系统缺少必要的组件,则可能无法正常识别JTAG ICE,进而导致无法在线仿真。 根据题目中的描述,当用户尝试通过AVR ...
ICE 服务JAVA连接 希望对要使用ICE的java同伴解决一些问题,互相讨论 303743000
5. **内存管理和连接管理**: 注意管理代理对象和ICE连接,避免内存泄漏。在不再使用时,记得调用`proxy->destroy()`释放资源。 6. **并发控制**: 如果你的应用需要并发发送多个请求,ICE支持多线程和线程池,以优化...
- **连接JTAG ICE**:介绍了如何将JTAG ICE连接到目标微控制器上,包括必要的物理连接步骤。 - **电源连接**:说明了如何为JTAG ICE提供稳定的电源供应,确保调试过程中不会出现意外断电。 #### 第三部分:前端软件...
平台编译环境:VS2017 ICE版本:3.7.7 ICEbuilder:5.0.9 源码中有两套程序: Server:启动服务器,等待连接 。连接后可双方通信 Client:连接服务器,与服务器通讯。 Slice: 手写几个接口即可。
在【Ice双向连接】的场景中,双向通信是指客户端和服务端都能主动发起消息传递,而不仅仅是单向的请求-响应模式。这种通信模式在实时交互、协作类应用或者需要高同步性的系统中尤为重要,例如游戏服务器、实时聊天...
2. **客户端代码**:客户端程序会使用`Ice`库生成的代码来连接服务器并调用其方法。这通常涉及创建`Ice::Communicator`实例,导入服务代理,并进行实际的调用操作。 3. **服务器端代码**:服务器端会实现Slice定义...
- 配置Ice的连接参数,如服务器地址、端口、认证信息等,可以通过配置文件或代码设置。 - 运行客户端程序,测试与服务端的通信功能。 4. **开发实践** - Ice提供了丰富的示例程序,可以帮助开发者快速上手。通过...
ICE-3.7.4 最新安装文件msi文件,windows版 ICE常见报错 Exception in thread Ice.ConnectionRefusedException error = 0 at IceInternal.Network.doFinishConnect(Network.java:417) at IceInternal....
3. 连接仿真器:在启动AVR Studio之前,先将JTAGICE连接到PC和目标板之间,确保AVR Studio能够自动检测到连接状态。 4. 串口连接:使用串行通讯电缆连接仿真器的串行通讯口和计算机的串口。注意,确保AVR Studio...
通过这样的工具,用户可以模拟不同类型的NAT行为,验证STUN协议的正确实施,以及评估ICE连接的成功率。 总的来说,STUN和ICE技术在现代互联网通信中起着至关重要的作用,尤其是对于那些依赖于实时、低延迟通信的...