• ICE常见编译和运行(异常)错误


    在编译和 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 的名字是一定不能带该后缀 , 不然服务器无法正常工作 )

  • 相关阅读:
    java基础入门(一)
    R语言绘制热图
    近200篇文章汇总而成的机器翻译非自回归生成最新综述,揭示其挑战和未来研究方向...
    【无标题】
    七、【React-Router6】路由传参 之 search
    elementUI时间选择器
    第一章:初识MySQL
    kafka详解(三)
    Mocha MemoryBufferQueue 设计概述
    微信小程序图片展示淡入淡出纯WXSS实现,无需使用消耗性能的动画引擎
  • 原文地址:https://blog.csdn.net/xiaogezq0/article/details/126658926