在编译和 Ice 应用相关的文件中,经常因为 ice 相关的文件包含关系而导致编译无法通过,此时的错误一般提示和 handle.h 相关。然而想要解决这样的错误,一般只需要把在无法编译成 .o 文件的 .cpp 文件中和 ice 文件相关的头文件放在该 .cpp 文件的起始行即可。也就是说,根据提示,把 .cpp 文件中最早提示导致出错的 .h 文件放在起始行。
ICE 的常见运行错误 ( 异常 ):
1 使用的地址错误 ,IP 并非本地 IP: 发生在初始化服务器时 , 没办法初始化 adapter.
错误信息 : (IP 错误 )
./test: Network.cpp:475: Ice::SocketException:
socket exception: Cannot assign requested address
另外 : 已经启动服务器后又重新启动 : 发生在初始化服务器时 , 没办法初始化 adapter.
错误信息 : (port 已经被使用 )
./server: Network.cpp:475: Ice::SocketException:
socket exception: Address already in use
///stringtoProxy 对于任何 string 都是有效的 , 均可以生成相应代理 , 但是该代理是否有效是无法保证的 . 如果代理无效 , 也就是说根本就没有这样的 adapter 或者对象 , 那么使用 Checkcast 或直接用该代理调用相应对象接口均会抛异常 . 下面对每种情况加于分析 .
2 使用的代理 IP 错误 : 发生在使用代理调用接口的时候
原因 : 根本就没有相应的通讯器存在 .
错误信息 : ( 使用的代理 IP 错误 )
抛出异常 : Ice::ConnectFailedException ( 需要几秒 , 需要进行搜索 )
3 使用的代理端口错误 , 两边不一致 : 发生在使用代理调用接口的时候
原因 : 存在通讯器 , 但是不存在相应的对象适配器 .
错误信息 :
抛出异常 : Ice::ConnectionRefusedException ( 很快 , 端口没有被启用引起的 , 无人监听该端口 )
4 使用的对象名字不正确 : 发生在使用代理调用接口的时候
原因 : 能够找到相应的对象适配器 , 但是该对象适配器中无法找到相应的对象
错误信息 :
抛出异常 : Ice::ObjectNotExistException ( 很快 )
5 对方程序没用启用 , 也就是服务器没有启用 : 发生在使用代理调用接口的时候
原因 : 根本就没有相应的通讯器存在 .
错误信息 :
抛出异常 : Ice::ConnectionRefusedException ( 很快 )
6 连接突然断开 ( 比如对方因为段错误而程序停止 , 或者在连接过程中正常关闭 ) : 发生在使用代理调用接口的时候 ( 连接丢失 )
原因 : 已经建立连接的对方突然断开
错误信息 :
warning: connection exception:
TcpTransceiver.cpp:217: Ice::ConnectionLostException:
connection lost: recv() returned zero
local address = 10.0.0.4:10050
remote address = 10.0.0.200:33412
( 服务器端的错误 , 使用 createObjectAdapter() 创建对象适配器 )
7 服务器端没有指定 adapter 的端口和 ip, 仅仅随便给了一个名字 , 并使用该名字从配置文件中读取信息 : 启动服务器时没有问题正常 , 但是客户端无法连接
原因 : 对象适配器无效
错误信息 :
抛出异常 : Ice::ConnectionRefusedException ( 很快 )
8 启动服务器时 , 给定的 adapter 的名字和配置文件中使用的不一致 : 启动服务器时没有问题正常 , 但是客户端无法连接 ( 无法从配置文件中获取所需要的信息 port 和 ip)
原因 : 对象适配器无效
错误信息 :
抛出异常 : Ice::ConnectionRefusedException ( 很快 )
9 配置文件中的名字和程序中给定的 adapter 名字一致 , 也就是说缺少 Endpoints, 作为后缀 . 启动服务器时没有问题正常 , 但是客户端无法连接 ( 无法从配置文件中获取所需要的信息 port 和 ip)
原因 : 对象适配器无效
错误信息 :
抛出异常 : Ice::ConnectionRefusedException ( 很快 )
10 配置文件中的名字后缀 Endpoints 写错 , 比如 Endpoint. 启动服务器时没有问题正常 , 但是客户端无法连接 (无法从配置文件中获取所需要的信息 port 和 ip)
原因 : 对象适配器无效
错误信息 :
抛出异常 : Ice::ConnectionRefusedException ( 很快 )
11 程序中给定的 adapter 名字多了后缀 Endpoints( 或者其他字符 , 甚至是 ”.”). 启动服务器时没有问题正常 , 但是客户端无法连接 ( 无法从配置文件中获取所需要的信息 port 和 ip)
原因 : 对象适配器无效
错误信息 :
抛出异常 : Ice::ConnectionRefusedException ( 很快 )
( 说明 : 也就是说配置文件中必须有 Endpoints 作为后缀 , 而在程序中给定 adapter 的名字是一定不能带该后缀 ,不然服务器无法正常工作 )
相关推荐
ICE常见编译和运行(异常)错误 收藏 在编译和Ice应用相关的文件中,经常因为ice相关的文件包含关系而导致编译无法通过,此时的错误一般提示和handle.h相关。然而想要解决这样的错误,一般只需要把在无法编译成.o文件...
- **编译和运行**:实例可能包含了编译脚本和测试指南,帮助理解如何将ICE服务部署和测试。 - **学习资源**:这些实例是学习ICE编程的宝贵资料,通过实践可以深入理解ICE的工作原理和最佳实践。 5. **分布式系统...
开发者可以学习到如何在C++中使用ICE进行内存管理、错误处理和并发控制,以及如何实现高效的服务器和服务客户端。 6. **Ice-3.5.1-demos目录**:这个目录下的文件可能包括了各种语言的源码示例、编译脚本、配置文件...
6. **实际调试技巧**:可能还会涵盖一些实用的调试技巧,如如何调试内存泄漏、性能瓶颈定位,以及如何处理常见的错误和异常。 掌握这些内容对于在MINI2440上进行高效的嵌入式开发至关重要,尤其对于初学者,这份...
它的所有权和生命周期系统确保了程序在运行时不会出现空指针异常、数据竞争等常见错误。这使得Rust成为编写底层系统软件,如网络通信库或操作系统组件的理想选择。 对于ICE的纯Rust实现,我们可以预期以下关键特性...
2. **Exception.h**:可能包含了异常处理类或函数的定义,用于在程序运行时处理错误和异常情况。 3. **UDP穿越NAT.TXT**:这是一个文本文件,很可能详细解释了UDP如何穿透NAT的工作原理,可能包括STUN(简单 ...
7. ARM9处理器有七种运行模式,包括用户模式、快速中断模式、外部中断模式、管理模式、中止模式、未定义模式和系统模式。其中,用户模式是非特权模式,其他模式是特权或异常模式。 8. ARM9的寻址方式与ARM7类似,...
6. **异常处理**:Java提供了异常处理机制,通过try-catch-finally语句块来捕获和处理程序运行时可能出现的错误,确保程序的健壮性。 7. **设计模式**:在复杂的Java项目中,设计模式如单例、工厂、观察者等被广泛...
错误代码通常与语言的编译错误、运行时错误或系统错误相关。 通过这个压缩包的学习,开发者可以从宏观层面理解不同编程语言的核心概念,提高问题解决能力,并且对编程英语有一定的掌握,有助于阅读英文文档和调试...
- **动态分析工具**:如Valgrind等工具,可以在运行时检测内存分配和释放的错误。 #### 三、深入理解代码优化 优化代码不仅能够提高软件的运行效率,还能减少资源消耗。深入理解代码优化的方法和技术是必要的,...
6. **错误处理**:在编程过程中,必须对可能出现的网络错误和异常进行处理,如连接失败、数据丢失等。 `Qt-Charts`标签提到的是QT的一个图表库,它允许开发者创建各种复杂的图表,如折线图、饼图、柱状图等。虽然在...
5. 异常处理:通过try-catch语句块来捕获和处理运行时可能出现的错误。 6. 多线程:在需要并发执行任务的场景下,可能会使用到线程编程。 7. 静态库与动态库的链接:可能涉及到外部库的引用,如Windows API或其他第...
本步骤将编译 u-boot.bin文件,但此时还无法运行在FS2410开发板上。 二、修改 cpu/arm920t/start.S文件,完成 U-Boot的重定向 (1)修改中断禁止部分 # if defined(CONFIG_S3C2410) ldr r1, =0x7ff /*根据 2410...