authenticatemanager.cs

来自「语音视频功能 里面实现了基本的QQ与语音对话」· CS 代码 · 共 69 行

CS
69
字号
using System;
using System.IO;
using System.Xml;
using System.Threading;

using gowk.core.packets;
using gowk.core.packets.querys;
using gowk.net.Sockets;
using gowk.net;
namespace gowk.core.managers
{
	/// <summary>
	/// AuthenticateManage 的摘要说明。
	/// </summary>
	public class AuthenticateManager:ManagerBase
	{
		public event JabberEventHandler LoginResult;
		public AuthenticateManager():base()
		{
		}
		public AuthenticateManager(JabberClient jc):base(jc)
		{
		}
		protected internal override bool OnMessage(gowk.core.packets.Packet pack)
		{
			if(!(pack is IQ))return false;
			IQ iq=(IQ)pack;
			if(!(iq.Query is AuthQuery))return false;
			return base.OnMessage (pack);
		}
		public void Login()
		{
		/*	this.JabberClient.State=State.Logining;
			IQ ar=new IQ();
			ar.ID=IDGenerator.NewID;
			ar.Type=PacketType.get;
			AuthQuery arq=new AuthQuery();
			arq.Username="gowhcy";
			ar.Query=arq;
			this.Send(ar);
			System.Threading.Thread.Sleep(300);*/
			
			IQ iq=new IQ();
			iq.To=this.JabberClient.Jid.Server;
			iq.Type=PacketType.set;
			iq.ID=IDGenerator.NewID;
			AuthQuery aq=new AuthQuery();
			aq.Username=this.JabberClient.Jid.User;
			System.Diagnostics.Debug.Assert(this.JabberClient.JabberStream.ID!=null);
			aq.SetDigest(this.JabberClient.JabberStream.ID,this.JabberClient.Password);
		//	aq.Password=this.JabberClient.Password;
			aq.Resource=this.JabberClient.Jid.Resouce;
			iq.Query=aq;
			if(this.LoginResult!=null)
			this.Send(iq,new JabberCallBack(this.OnLoginResult),20000);
		}
		public void OnLoginResult(JabberEventArgs a)
		{
			if(a.ReplyPacket!=null && a.ReplyPacket.Type==PacketType.result)
			{
				this.JabberClient.State=State.Logined;
			}
			if(this.LoginResult!=null)
			this.Invoke(this.LoginResult,new object[]{a});
		}

	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?