在ICE客户端中如何定位服务器端的位置(即如何寻找代理)
2013-11-23 14:25
281 查看
最近开始学习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;
}
以下是中文文档中关于端点的描述:
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;
}
相关文章推荐
- 在ICE客户端中如何定位服务器端的位置(即如何寻找代理)
- ICE专题:在客户端中如何定位服务器(即如何寻找代理)
- ICE专题:在客户端中如何定位服务器(即如何寻找代理)
- ICE专题:在客户端中如何定位服务器(即如何寻找代理)
- 在客户端中如何定位服务器(即如何寻找代理)
- ICE客户端定位Serant的位置详解
- HBase1.2.3版本客户端请求如何定位HRegion的位置
- asp.net TreeView安装、使用(如何将TreeView打包发布)(带CheckBox选择框的TreeView的初始化,TreeView客户端操作:选择父节点后自动选择所有子节点,子节点选择后自动选择父节点)(TreeView节点精确定位)
- 如何检测死锁并快速定位死锁位置
- 如何定位WinCE产生Data Abort错误的位置
- nginx反向代理后应用程序如何获取客户端真实IP?
- nginx反向代理后应用程序如何获取客户端真实IP?
- 如何通过引用定位堆中对象的具体位置?
- Asp.net中如何在客户端JS中调用服务器端方法
- 如何用C#及JS得到服务器端和客户端的IP
- 如何定位到append的当前位置,不用拉滚动条scrollIntoView方法
- cache:缓存在asp.net中如何管理?服务器端缓存?Session, Application, Cache objectscache ,客户端缓存?Cookies,ViewState
- vbscript与javascript之间如何传递变量(包括服务器端与客户端)
- 如何获得你的准确位置及iphon手机应用定位不准确原因分析
- <Web>地理定位API如何确定你的位置