OpenFile android 即时通讯客服端开发(二)Smack开发

在完成openfire服务端的配置后

下载Spark就可以通讯,这样也方便测试

我们就可以使用Smack进行开发测试了。

其中android 客服端通讯示例http://www.apkbus.com/android-69413-1-1.html

就可以开始开发了。


其中smack核心包 类 如下

实现连接,重连,通讯,注册登录,状态修改,增删改查联系人,一对一聊天,上传附件,聊天室,聊天室管理,

数据包侦听.......等一系列功能



Package org.jivesoftware.smack

Core classes of the Smack API.

See: 
          Description

Interface Summary
ChatManagerListener聊天相关的事件侦听器
ConnectionCreationListener一个新的连接创建,这个接口的实现者将会收到通知
ConnectionListener允许的接口实现类监听连接关闭和重联事件
MessageListener 
PacketInterceptor提供了一种机制来拦截和修改将被发送到服务器的数据包
PacketListener提供了一种通过指定的包过滤的机制
PrivacyListListener实现类监服务器保密通信的接口
RosterListener名单变更或已存在的用户在列表中状态改变。
 

Class Summary
AbstractConnectionListenerabstractconnectionlistener类提供接口定义的所有方法connectionlistener空的实现
AccountManager允许在XMPP服务器帐户的创建和管理
Chat两个用户之间聊天发送的一系列消息
ChatManager管理目前所有的聊天记录.
Connection连接类提供了一个XMPP服务器连接的接口实现共享的方法
Connection.InterceptorWrapper过滤器拦截关联的数据包
Connection.ListenerWrapper 
ConnectionConfiguration建立服务器连接的配置
PacketCollector收集结果的队列,通过指定的过滤包提供了一种机制
PrivacyList一个隐私列表,表示这是一个只读类用来表示一组允许或阻止通信的联系人列表
PrivacyListManagerprivacylistmanagerXMPP客户端用来阻止或允许其他用户的通信
ReconnectionManager处理自动重联过程
Roster代表一个用户的名单收集更新用户存在名单
RosterEntry每个用户在你的名单中的条目,其中包含了用户的JID和您指定的姓名或昵称.
RosterGroup一组名单条目
SASLAuthentication类负责使用SASL认证用户连接的资源和建立与该服务器的会话
SmackConfiguration表示配置
XMPPConnection创建一个套接字连接到XMPP服务器.
 

Enum Summary
ConnectionConfiguration.SecurityModeXMPP服务器进行连接时,可用TLS的枚举的安全模式
Roster.SubscriptionMode枚举订阅模式选项
SmackError 
 

Exception Summary
XMPPException一个通用的错误时引发的异常发生时,执行一个XMPP操作


此外还有

org.jivesoftware.smackx.muc Class MultiUserChat 

  47人阅读  评论(0)  收藏  编辑  删除

目录(?)[+]

Smack

org.jivesoftware.smackx.muc 
Class MultiUserChat

java.lang.Object
  extended by org.jivesoftware.smackx.muc.MultiUserChat

public class MultiUserChat
    
    
     
     extends java.lang.Object
    
    

MultiUserChat是发生在许多用户在一个虚拟房间一段对话。一个房间可以有许多不同的隶属关系和角色。角色可能是“主人”,“管理员”,“成员”,“outcase”。可能的角色是“主持人”,“参与者”和“访客”。保证每个角色和隶属关系不同的权限(例如,将消息发送到所有用户,踢参与者和参观者,Grant voice,编辑成员列表等)

Author:
Gaston Dombiak, Larry Kirschner

Constructor Summary
MultiUserChat(Connection connection, java.lang.String room) 
          Creates a new multi user chat with the specified connection and room name.
 
Method Summary
static voidaddInvitationListener(Connection conn, InvitationListener listener) 
          添加一个邀请通知的监听器
 voidaddInvitationRejectionListener(InvitationRejectionListener listener) 
         添加一个拒绝邀请通知监听器
 voidaddMessageListener(PacketListener listener) 
        添加任何新的消息在群聊,将收到一个数据包监听
 voidaddParticipantListener(PacketListener listener) 
         添加一个数据包侦听器将收到的任何出现的数据包发送到群组聊天
 voidaddParticipantStatusListener(ParticipantStatusListener listener) 
          添加一个监听器 监听将剔除用户禁止占用状态的改变或授予管理权限
 voidaddPresenceInterceptor(PacketInterceptor presenceInterceptor) 
          Adds a new PacketInterceptor that will be invoked every time a new presence is going to be sent by this MultiUserChat to the server.
 voidaddSubjectUpdatedListener(SubjectUpdatedListener listener) 
          添加一个监听如有变更通知
 voidaddUserStatusListener(UserStatusListener listener) 
          添加一个侦听器将通知您的状态变化,如被用户踢出房间,禁止,或授予管理权限.
 voidbanUser(java.lang.String jid, java.lang.String reason) 
          从该聊天室剔除用户
 voidbanUsers(java.util.Collection<java.lang.String> jids) 
           从该聊天室剔除用户群
 voidchangeAvailabilityStatus(java.lang.String status, Presence.Mode mode) 
          改变聊天室成员的状态
 voidchangeNickname(java.lang.String nickname) 
            更改聊天室成员的昵称
 voidchangeSubject(java.lang.String subject) 
          更改聊天室的主题
 voidcreate(java.lang.String nickname) 
          根据一些默认配置,创建聊天室,聊天室的主人发出请求分配增加所有者的房间,但不允许任何人进入房间(有效地“锁定”的房间)。
 MessagecreateMessage() 
         创建一个新的消息发送到聊天室
 ChatcreatePrivateChat(java.lang.String occupant, MessageListener listener) 
          返回一个新的聊天,发送私人信息到一个给定的室内成员
static voiddecline(Connection conn, java.lang.String room, java.lang.String inviter, java.lang.String reason)
         通知发件人的邀请,受邀者拒绝邀请
 voiddestroy(java.lang.String reason, java.lang.String alternateJID) 
          向服务器发送请求来销毁聊天室
protected  voidfinalize() 
           
 java.util.Collection<Affiliate>getAdmins() 
          返回房间管理员集合
 FormgetConfigurationForm() 
          返回房间的结构形式
static java.util.Collection<HostedRoom>getHostedRooms(Connection connection, java.lang.String serviceName) 
        返回一个集合,其中每个XMPP地址的房间的房间的名字
static java.util.Iterator<java.lang.String>getJoinedRooms(Connection connection, java.lang.String user) 
         返回一个Iterator,要求用户已加入所在的房间
 java.util.Collection<Affiliate>getMembers() 
          返回一个成员集合
 java.util.Collection<Occupant>getModerators() 
         返回聊天室主持人集合
 java.lang.StringgetNickname() 
          返回用于加入房间的昵称如果目前没有加入返回null
 OccupantgetOccupant(java.lang.String user) 
          返回特定的成员信息如果用户不在房间里返回null.
 PresencegetOccupantPresence(java.lang.String user) 
          返回特定用户的存在信息如果用户不在房间里null
 java.util.Iterator<java.lang.String>getOccupants() 
          返回群聊的成员名单字符串一个迭代器
 intgetOccupantsCount() 
           返回在群聊成员的数量
 java.util.Collection<Affiliate>getOutcasts() 
          返回一个被剔除用户的集合
 java.util.Collection<Affiliate>getOwners() 
          返回房主的集合。
 java.util.Collection<Occupant>getParticipants() 
          返回一个房间的参与者集合
 FormgetRegistrationForm() 
          返回房间的登记表一个不相关的用户如果没有登记使用可能成为房间空的一员
 java.lang.StringgetReservedNickname() 
          返回预订的房间用户的昵称
 java.lang.StringgetRoom() 
          返回房间此MultiUserChat对象代表的名字
static RoomInfogetRoomInfo(Connection connection, java.lang.String room) 
         返回一个给定的房间基础的信息,而不必实际加入房间.
static java.util.Collection<java.lang.String>getServiceNames(Connection connection) 
        返回一个多用户聊天服务XMPP地址的集合
 java.lang.StringgetSubject() 
          返回的最后一个已知房间的主题或空,如果用户还没有加入房间或房间不会有一个主题。
 voidgrantAdmin(java.util.Collection<java.lang.String> jids) 
          赋予管理员权限的其他用户
 voidgrantAdmin(java.lang.String jid) 
          赋予管理员权限的其他用户
 voidgrantMembership(java.util.Collection<java.lang.String> jids) 
          授予其他用户会员权限
 voidgrantMembership(java.lang.String jid) 
          授予其他用户会员权限
 voidgrantModerator(java.util.Collection<java.lang.String> nicknames) 
          授予参与者或访客管理权限
 voidgrantModerator(java.lang.String nickname) 
        授予参与者或访客管理权限
 voidgrantOwnership(java.util.Collection<java.lang.String> jids) 
          将授予其他用户所有权权限
 voidgrantOwnership(java.lang.String jid) 
          将授予其他用户所有权权限
 voidgrantVoice(java.util.Collection<java.lang.String> nicknames) 
          授予的房间里的游客麦克风权限
 voidgrantVoice(java.lang.String nickname) 
          授予的房间里的游客麦克风权限
 voidinvite(Message message, java.lang.String user, java.lang.String reason) 
          Invites another user to the room in which one is an occupant using a given Message.
 voidinvite(java.lang.String user, java.lang.String reason) 
          Invites another user to the room in which one is an occupant.
 booleanisJoined() 
          如果目前在多用户聊天返回true,(after calling thejoin(String) method).
static booleanisServiceEnabled(Connection connection, java.lang.String user) 
          如果指定的用户支持多用户聊天协议返回true
 voidjoin(java.lang.String nickname) 
         使用指定的别名加入聊天室
 voidjoin(java.lang.String nickname, java.lang.String password) 
         使用指定的昵称和密码 加入聊天室
 voidjoin(java.lang.String nickname, java.lang.String password, DiscussionHistory history, long timeout)
            使用指定的昵称和密码 加入聊天室
 voidkickParticipant(java.lang.String nickname, java.lang.String reason) 
      房间踢除一个访客或参与者
 voidleave() 
       离开聊天室
 MessagenextMessage() 
         返回下一个可用的聊天消息
 MessagenextMessage(long timeout) 
          返回下一个可用的聊天消息
 MessagepollMessage() 
         民意调查,并返回下一个消息,如果没有下一个可用的消息返回null
static voidremoveInvitationListener(Connection conn, InvitationListener listener) 
         移除邀请通知监听器
 voidremoveInvitationRejectionListener(InvitationRejectionListener listener) 
        移除一个拒绝邀请通知的监听器
 voidremoveMessageListener(PacketListener listener) 
         删除一个通知多用户聊天的任何新的消息数据包侦听器
 voidremoveParticipantListener(PacketListener listener) 
          Remoces a packet listener that was being notified of any new Presence packets sent to the group chat.
 voidremoveParticipantStatusListener(ParticipantStatusListener listener) 
          Removes a listener that was being notified of changes in occupants status in the room such as the user being kicked, banned, or granted admin permissions.
 voidremovePresenceInterceptor(PacketInterceptor presenceInterceptor) 
          Removes a PacketInterceptor that was being invoked every time a new presence was being sent by this MultiUserChat to the server.
 voidremoveSubjectUpdatedListener(SubjectUpdatedListener listener) 
          移除一个 变更通知 监听器。
 voidremoveUserStatusListener(UserStatusListener listener) 
         移除一个 户被踢出房间,禁止,或授予管理权限  监听器
 voidrevokeAdmin(java.util.Collection<java.lang.String> jids) 
         撤销用户的管理员权限。
 voidrevokeAdmin(java.lang.String jid) 
          撤销用户的管理员权限。
 voidrevokeMembership(java.util.Collection<java.lang.String> jids) 
          撤销用户的会员权限
 voidrevokeMembership(java.lang.String jid) 
         撤销用户的会员权限
 voidrevokeModerator(java.util.Collection<java.lang.String> nicknames) 
          撤销其他用户管理权限
 voidrevokeModerator(java.lang.String nickname) 
          撤销另一个用户版主的特权
 voidrevokeOwnership(java.util.Collection<java.lang.String> jids) 
          撤销其他用户的所有权
 voidrevokeOwnership(java.lang.String jid) 
          撤销其他用户的所有权.
 voidrevokeVoice(java.util.Collection<java.lang.String> nicknames) 
          撤销房间中参与者的声音
 voidrevokeVoice(java.lang.String nickname) 
          撤销房间中参与者的声音
 voidsendConfigurationForm(Form form) 
         发送配置到服务器
 voidsendMessage(Message message) 
          将消息发送到聊天室。
 voidsendMessage(java.lang.String text) 
            将消息发送到聊天室。
 voidsendRegistrationForm(Form form) 
          填妥的报名表格到服务器
 
Methods inherited from class java.lang.Object
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 


  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
环境:Windows XP SP3、 VC++ 6.0、 Windows 2003 SDK 使用步骤: 1、下载解压之后,使用VC++ 6.0打开两个工程:一个是SocketServer和一个ClientSocket工程。 2、首先运行服务器工程,选默认的口1008 3、然后运行客户工程,选默认的口1008和默认的服务器地址 4、再运行多个客户进程 5、如果一切正常,可以每个客户的消息发送,我们可以在服务和各个客户同步看到消息 实现一个服务器对多个客户的关键是,在服务的使用集合CPtrList类用保存客户的socket对象,思想与Java中的编程思想一样,只不过Java中会使用多线程技术,在Vector集合保存客户的socket对象,而MFC框架提供了CSocket类,它是一个异步通信的类,所以看上去代码比较Java的多线程代码简单的实现了一个对多的即时通讯功能。另外,MFC提供了CSocketFile类和CArchive类与CSocket类实现了C++的网络通讯编程功能。 本示例注释非常详细,所有的辅助类都放一个util目录中,然后在工程中分了一个目录来管理这些辅助类,使用代码非常清晰。手动书写部分的代码是按Java的规范书写,当然其它代码由IDE生成的,所以是MS的风格,所以当你看代码时,只要是使用“骆驮命名法”的方法都是本人书写的功能性代码。 参看的思路:在服务要从回调方法onAccept读起;而客户代码主要从OnSendButton方法读起,即可理解整个代码的意思。 阅读对象:具有Java的Socket编程经验的人员,并且希望能够书写出比Java效率更高的即时通讯程序的人员
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值