牵牛散步
仗剑走天涯

最近开始学习ICE,头有点大,900多页的文档看了五百多页还不知CLIENT如何定位SERVER的位置,郁闷的很...昨天毛了直接看文档的最后几页..我晕原来在这里给阐述了...差不多想撞墙

以下是中文文档中关于端点的描述:

D.2 端点
纲要
endpoint : endpoint
描述
端点列表由一个或多个用冒号(:) 分隔的端点组成。端点的格式如下所
示: protocol option。所支持的协议有tcp、udp、ssl,以及
default。如果使用了default,它会被Ice.Default.Protocol 属性的值替
代。如果端点的格式有问题,或者指定了未知的协议,应用会收到
Ice::EndpointParseException。
只有安装了IceSSL 插件,才能使用ssl 协议。
各个协议及其所支持的选项将在下面描述。
TCP 端点
纲要
tcp -h host -p port -t timeout -z
描述
tcp 端点支持以下选项:
选项描述客户语义服务器语义
-h host 指定端点的主机名
或IP 地址。如果
没有指定,将使用
Ice.Default.Hos
t 的值。
确定要连接到的主
机名或IP 地址。
确定对象适配器用
于侦听连接的网络
接口,以及在适配
器所创建的代理中
向外公布的主机
名。
-p port 指定端点的端口
号。
确定要连接到的端
口( 必须指定)。
如果没有指定这个
选项,或是port 为
零,端口将由操作
系统选择。
932 代理与端点


以上是基于TCP协议的,关于UDP,SSL协议的也差不多

我在我的聊天程序中连接LAN中一台服务器的代码:
#include <Ice/Ice.h>
#include <Printer.h>

using namespace std;
using namespace Demo;


int main(int argc, char * argv[])
{
    int status = 0;
 char strtemp[100];//聊天内容
 char clientname[20];//客户名
 char chattmp[130];
    Ice::CommunicatorPtr ic;
    try {
  ic = Ice::initialize(argc, argv);
/*连接服务器:SimplePrinter16所申请的代理ID,default即为使用默认的协议TCP,-h 192.168.1.16 为服务端所在LAN中的IP地址,-p 9600为端口号*/
  Ice::ObjectPrx base = ic->stringToProxy("SimplePrinter16:default -h 192.168.1.16 -p 9600");
  //创建一个Printer的代理(Printer即为客户端与服务器端的接口),利用checkedCast(base)检查代理是否存在
  PrinterPrx printer = PrinterPrx::checkedCast(base);
  if (!printer)
  {
   throw "Invalid proxy";//代理不存在
  }
  else
  {
   printf("请输入您的ID:");
   cin >> clientname;
  }

  while ( 1 )
  {
   cin >> strtemp;//输入聊天内容
   if ( strcmp( strtemp,"q") == 0 )
   {
    break;//退出聊天
   }
   //strcat( chattmp, clientname );
   strcpy( chattmp, clientname );
   strcat( chattmp, " say: " );
   strcat( chattmp, strtemp );
   printer->printString(chattmp);
  }
  
  //发给服务器的退出消息
  printer->printString(clientname);
  printer->printString("已退出!");
  cout << "成功退出!" << endl;
  
    } catch (const Ice::Exception & ex) {
  cerr << ex << endl;
  status = 1;
    } catch (const char * msg) {
  cerr << msg << endl;
  status = 1;
    }
    if (ic) {
  try {
   ic->destroy();
  } catch (const Ice::Exception & ex) {
   cerr << ex << endl;
   status = 1;
  }
    }
    return status;
}

posted on 2005-12-09 20:10 牵牛散步 阅读(3176) 评论(3)  编辑 收藏 引用 所属分类: ICE FOR VC++6.0
Comments
  • # re: 在ICE客户端中如何定位服务器端的位置(即如何寻找代理)
    括号
    Posted @ 2006-08-07 12:56
    写的很不错,欢迎指教哦。我也刚学ICE,嘿嘿。  回复  更多评论   
  • # re: 在ICE客户端中如何定位服务器端的位置(即如何寻找代理)
    w
    Posted @ 2007-04-16 13:05
    如果有多个客户端,服务器响应函数输入参数只有数据+current,服务器怎么知道数据是来自哪个客户端,也就是怎么获取客户端的IP+ 端口?  回复  更多评论   
  • # re: 在ICE客户端中如何定位服务器端的位置(即如何寻找代理)
    QQ332728135
    Posted @ 2007-05-15 13:00
    感谢,很好的文章  回复  更多评论   

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理