熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

JAVA與QQ網絡通訊實例

2013-11-23 19:15:47  來源: Java核心技術 

  准備工作:

  兩個QQ(Q號現在好容易申請)

  eclipse(支持awt swing 可視化開發的版本為佳)

  JDK以上

  JQL直接從官方那邊下載的不能直接用需要改裝下載地址:

  步驟:

  解壓jqgsvbeta_src

  用eclipse導入目錄jqgsvbeta_src下的項目

  把jqgsvbeta_src目錄下的commonscodecjar 和 commonsloggingjar加到項目屬性裡的Librares中

  打開commyqqMuiltQQfrendSend實例代碼都在這裡可以直接運行用eclipse運行該類如果登陸失敗多登陸

  幾次就可以了

  //登陸代碼

  

  client = new QQClient();

  clientsetConnectionPoolFactory(new PortGateFactory());

  QQUser user = new QQUser(你的Q號 你Q號的密碼);

  clientaddQQListener(this);

  usersetUdp(true);

  clientsetUser(user);

  //clientsetLoginServer();

  clientsetLoginServer();

  

  qq服務器地址有多種你可以選一個填上去QQ號必須是整型

  //發送消息

  

  clientsendIM(一個好友的QQ號UtilgetBytes(comext));//發送一個普通的消息

  

  好友的QQ號必須是整型

  類QQClient主要是執行QQ客戶端的動作比如發送消息添加好友獲取好友等

  //獲取你的Q號下的所有好友信息

  

  GetFriendListReplyPacket gf = (GetFriendListReplyPacket)egetSource();

  javautilList friends = (javautilList) gffriends;

  for(int i = ; i < friendssize() ; i++){

  QQFriend qf = (QQFriend)friendsget(i);

  jTextAreasetText(jTextAreagetText() + StringvalueOf(qfqqNum) + \n);

  }

  if((int)gfposition != ){

  clientgetFriendList(gfposition);

  }else{

  jButtonsetEnabled(true);

  jButtonsetEnabled(true);

  }

  

  clientgetFriendList() //獲取好友列表

  這個方法需要配合一個變量position和一個事件才能完成因為QQ是按多次發送好友列表position =

  表示已到好友列表最後一頁不需要在getFriendList當得到好友列表會產生一個事件事件編號為

  GetFriendListReplyPacket 好友類

  //事件驅動

  jql全部采用事件驅動實現接口 IQQListener

  public void qqEvent(QQEvent e) {//事件監聽器

  Systemoutprintln(事件ID: + etype);

  /* */ switch(etype)

  {

  /* <MISALIGNED > */ /* */ default:

  break;

  /* <MISALIGNED > */ /* */ case :

  /* <MISALIGNED > */ /* */ processLoginSuccess();//對應的事件處理

  /* <MISALIGNED > */ /* */ break;

  /* <MISALIGNED > */ /* */ case :

  /* <MISALIGNED > */ /* */ processLoginFail();

  /* <MISALIGNED > */ /* */ break;

  ///* <MISALIGNED > */ /* */ case :

  ///* <MISALIGNED > */ /* */ processLoginUnknownError();

  ///* <MISALIGNED > */ /* */ break;

  /* <MISALIGNED > */ /* */ case :

  /* <MISALIGNED > */ /* */ processSendIMSuccess();

  /* <MISALIGNED > */ /* */ break;

  /* <MISALIGNED > */ /* */ case :

  /* <MISALIGNED > */ /* */ processChangeStatusSuccess();

  QQ的每次動作都會產生一個事件每個事件對應一個整數在類edutsinghualumaqqqqeventsQQEvent有具體描述

  如登陸成功為登陸失敗為


From:http://tw.wingwit.com/Article/program/Java/hx/201311/26541.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.