您的位置:首页 > 其它

在客户端中如何定位服务器(即如何寻找代理)

2008-11-02 17:05 288 查看
最近开始学习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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: