具体情况如下:    corba服务器位于192.168.10.250上,smart agent也运行在192.168.10.250上。    客户机有3个网段    其中10网段ip表为192.168.10.1 ~ 192.168.10.253,网关192.168.10.254
    其中18网段ip表为192.168.18.1 ~ 192.168.18.253,网关192.168.18.254
    其中12网段ip表为192.168.12.1 ~ 192.168.12.253,网关192.168.12.254    现在只有10网段的corba客户端程序能连接192.168.10.250上的corba服务器。
    但这3个网段内的所有客户机都是可以互相访问,互相ping通的。    开发环境是d6 + visibroker 4.1 for c++
    请问,如何配置才能使3个网段的corba客户端程序都能连接192.168.10.250上的corba服务器。
   
 

解决方案 »

  1.   

    不同网段设置 ORBagentAddr 为smart agent 地址
      

  2.   

    咱这里也是多网段的三层系统,还是远程的,是通过VPN来完成的
      

  3.   

    3个网段之间有防火墙?核对CORBA应用使用的端口。配置防火墙,使该端口的TCP报文能通过。for more information,references CORBA firewall specification
    orbos/98-05-04
      

  4.   

    我程序中的代码片段,可能对你有点作用。指定smartAgent地址和端口。BCB6+VisiBroker4.5
    int    m_argc = 0;
    char** m_argv = 0;
    AnsiString m_strAddr = "192.168.0.1";
    AnsiString m_strPort = "14000";///////////////////////////////////////////////////////////
    //CORBA连接
    if(m_strAddr.IsEmpty() || m_strPort.IsEmpty())
    {
      m_argc = 0;
      m_argv = 0;
    }
    else
    {
      m_argv = new char*[5];
      m_argv[0] = Application->ExeName.c_str();
      m_argv[1] = "-ORBagentAddr";
      m_argv[2] = m_strAddr.c_str();
      m_argv[3] = "-ORBagentPort";
      m_argv[4] = m_strPort.c_str();
      m_argc = 5;
    }if( m_argc > 0 )
    {
      orb = CORBA::ORB_init( m_argc, m_argv );
      delete [] m_argv;
      m_argv = 0;
      m_argc = 0;
    }
    else
    {
      orb = CORBA::ORB_init( _argc, _argv );
    }