用 port 装好 Ice。port/devel/ice。
照着 tutor 弄了个 hello world。
http://www.zeroc.com/doc/Ice-3.3.1/manual/Hello.4.3.htmlg++ -Wall -o svr -I. -I/usr/local/include Server.cpp Printer.cpp -L/usr/local/lib -lIce -lIceUtil -pthread -liconv
g++ -Wall -o cli -I. -I/usr/local/include Client.cpp Printer.cpp -L/usr/local/lib -lIce -lIceUtil -pthread -liconv
不过第一次运行就碰到:
$ ./svr
Network.cpp:346: Ice::DNSException:
DNS error: servname not supported for ai_socktype
host:
从 Network.cpp 文件中观察,如果没有指定 host,则“通过如下调用获取 host ip”时失败了。
是 FreeBSD 不允许这样写吧,估计,没有细究。
rs = getaddrinfo(0, "1", &hints, &info);
修改下自己写的 Server.cpp 中,
Ice::ObjectAdapterPtr adapter = ic->createObjectAdapterWithEndpoints(
"SimplePrinterAdapter", "default -p 10000");
其中 "default -p 10000" 改为 "default -h localhost -p 10000" 即可。Client.cpp 也改下对应地方。
这段 "default -p 10000" 是描述socket信息的,Ice称为endpoint。细节请参考:
http://www.zeroc.com/doc/Ice-3.3.1/manual/ProxyEndpointRef.51.2.html
评论