码迷,mamicode.com
首页 > 其他好文 > 详细

Community Server Toolkit

时间:2014-07-24 12:08:55      阅读:214      评论:0      收藏:0      [点我收藏+]

标签:style   blog   java   color   使用   os   数据   io   

1、服务端程序(SA)登录注册或退出:

首先加载ServerAppService组件,然后调用loginAsServerApp(host,loginType,appName,serviceTypes)登录并注册服务。SA程序一旦注册了某服务,则意味着该SA程序负责相关服务的处理过程。群体内其他程序对该服务的请求则会被自动送来。

目前,服务端程序(SA)需要通过1516端口连接Sametime服务器,所以在登录前必须使用setConnectivity()来设置网络连接参数。

ServerAppService m_saService = (ServerAppService)m_session.getCompApi(ServerAppService.COMP_NAME);
Connection[] connections = {new SocketConnection(1516, 17000),};
m_saService.setConnectivity(connections);
m_saService.loginAsServerApp( serverName, loginType, "Hacker Catcher", null);

2、Channel服务:客户端到服务端通信或者服务端到服务端通信由Channel服务完成。

A、通信双方都需要加载ChannelService组件。

STSession session = new STSession("ChannelServiceClient"+this);
String [] compNames = {ChannelService.COMP_NAME,CommunityService.COMP_NAME};
session.loadComponents(compNames);
session.start();
ChannelService channelService=(ChannelService)session.getCompApi(ChannelService.COMP_NAME);

B、主动方利用Channel服务的createChannel()创建通道,新创建的通道需要调用open()将其打开并建立连接。

            Channel channel = channelService.createChannel(SERVICE_TYPE, 0, 0, EncLevel.ENC_LEVEL_ALL, null, null);
            channel.open();

被动方使用addChannelServiceListener()添加监听器。当主动方调用open()时,被动方的channelReceived()方法会被自动调用,在此方法中根据情况决定接受(accept())、关闭(close())或挂起(pend())通道。挂起的通道可以后续调用accept()或close()来打开或关闭。或调用getCreateData()方法获得主动方创建通道时的握手数据(即createChannel方法中的第5个参数)。

 1     channelService.addChannelServiceListener(this);
 2     public void channelReceived(ChannelEvent event) {
 4         Channel channel = event.getChannel();
 5         channel.addChannelListener(this);
 6         if(channel.getServiceType()==SERVICE_TYPE)
 7             channel.accept(EncLevel.ENC_LEVEL_ALL, null);
 8         else
 9             channel.close(STError.ST_OK, null);
10         
11     }

C、accept后通道建立,通道以全双工方式运行,双方都可以通过sendMsg方法发送消息。接收方需要事先调用addChannelListener添加一个监听器,这样,当消息送达时接收方的channelMsgReceived方法将被自动调用,另外当通道打开时接收方的channelOpened方法会被调用,打开失败时channelOpenFailed方法会被调用,通道关闭时channelClosed方法会被调用。

发送方:

channel.sendMsg((short)1, "My Message".getBytes(), true);

接收方:

        Channel channel = event.getChannel();
        channel.addChannelListener(this);
    public void channelMsgReceived(ChannelEvent event) {
        System.out.println("MsgType = "+event.getMessageType());
        System.out.println("Data = "+new String(event.getData()));
    }

Community Server Toolkit,布布扣,bubuko.com

Community Server Toolkit

标签:style   blog   java   color   使用   os   数据   io   

原文地址:http://www.cnblogs.com/muyuhu/p/3865230.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!