网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 
中国网管联盟
Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道
 当前位置: > bitsCN.com > PHP > PHP技术进阶 > 用php聊QQ  

用php聊QQ

2006-02-27  作者:bitsCN整理  来源:中国网管联盟  点评 投稿 收藏

我也是最近才看到的,大家可以到网上搜索一下QQ的http协议,实现很简单,我只是稍微试了一下,写了以下几段代码,如果哪位有兴趣可以继续研究。如果有J2ME或者各大手机厂商的SDK,研究一下javaQQ也不错。最近要考试,只能先贴出来,先说明,未全部完成
代码:
<?php class Query { private $timeout; // = 100; // Max time for stablish the conection private $server; // = '219.133.51.11';//'219.133.51.11'; // IP address private $host; // = 'tqq.tencent.com'; // Domain name private $port; // = 8000; private $postValues; // = array ( 'VER' => '1.1', private $ret; public function go(){ $this->postValues = substr( $this->postValues, 0, -1 ); $request = "POST HTTP/1.1\r\n"; $request .= "Host: $this->host\r\n"; $length = strlen( $this->postValues ); $request .= "Content-Type: application/x-www-form-urlencoded\r\n"; $request .= "Content-Length: $length\r\n"; $request .= "\r\n"; $request .= $this->postValues; $socket = fsockopen( $this->server, $this->port, $errno, $errstr, $this->timeout ); fputs( $socket, $request ); $ret = ''; while ( !feof( $socket ) ) { $ret .= fgets( $socket, 4096 ); } fclose( $socket ); $this->setRetValues( $ret ); } public function clearParams() { $this->postValues = ''; return true; } public function addParams( $var , $value ) { $this->postValues.= urlencode( $var ) . "=" . urlencode( $value ) . '&'; } public function setTimeout( $timeout ) { $this->timeout = $timeout; return true; } public function setServer( $server ) { $this->server = $server; return true; } public function setHost( $host ) { $this->host = $host; return true; } public function setPort( $port ) { $this->port = $port; return true; } public function getRetValues() { parse_str(iconv('UTF-8','GB2312',$this->ret),$arrValues); return $arrValues; //return $this->ret; } private function setRetValues( $ret ) { $this->ret=$ret; return ture; } } ?> <?php class QQ { private $query; private $no; private $pass; public function login() { $this->query->clearParams(); $this->query->addParams('VER','1.1'); $this->query->addParams('CMD','Login'); $this->query->addParams('SEQ',rand(1000,9000)); $this->query->addParams('UIN',$this->no); $this->query->addParams('PS',$this->pass); $this->query->addParams('M5','1'); $this->query->addParams('LC','9326B87B234E7235'); $this->query->go(); return $this->query->getRetValues(); } public function getFriendList() { // VER=1.1&CMD=List&SEQ=&UIN=&TN=160&UN=0 $this->query->clearParams(); $this->query->addParams('VER','1.1'); $this->query->addParams('CMD','List'); $this->query->addParams('SEQ',rand(1000,9000)); $this->query->addParams('UIN',$this->no); $this->query->addParams('TN','160'); $this->query->addParams('UN','0'); //$this->query->addParams('LC','9326B87B234E7235'); $this->query->go(); return $this->query->getRetValues(); } public function changeStat($st) { $this->query->clearParams(); $this->query->addParams('VER','1.1'); $this->query->addParams('CMD','Change_Stat'); $this->query->addParams('SEQ',rand(1000,9000)); $this->query->addParams('UIN',$this->no); $this->query->addParams('ST',$st); $this->query->go(); return $this->query->getRetValues(); //VER=1.1&CMD=Change_Stat&SEQ=&UIN=&ST= //ST为要改变的状态,10为上线,20为离线,30为忙碌。 } public function getMsg() { //VER=1.1&CMD=GetMsgEx&SEQ=&UIN= $this->query->clearParams(); $this->query->addParams('VER','1.1'); $this->query->addParams('CMD','GetMsgEx'); $this->query->addParams('SEQ',rand(1000,9000)); $this->query->addParams('UIN',$this->no); $this->query->go(); return $this->query->getRetValues(); } public function getUserInfo($user_no) { // VER=1.1&CMD=GetInfo&SEQ=&UIN=&LV=2&UN= $this->query->clearParams(); $this->query->addParams('VER','1.1'); $this->query->addParams('CMD','GetInfo'); $this->query->addParams('SEQ',rand(1000,9000)); $this->query->addParams('UIN',$this->no); $this->query->addParams('LV','2'); $this->query->addParams('UN',$user_no); $this->query->go(); echo time().' '.(double)microtime(true).'<br>'; //echo $user_no.'ok'; //print_r( $this->query->getRetValues()); } public function setQQInfo( $no , $pass ) { $this->no = $no; $this->pass = md5($pass); return true; } public function setQuery($query) { $this->query = $query; return true; } } ?> 网管联盟bitsCN@com

TAGs     this->   query->   addParams   function   public   return      
 上一篇:无限分类与树型论坛的实现方法   下一篇:php代码优化及php相关问题总结
用php聊QQ 评论:
loading.. 评论加载中…
评论:请自觉遵守互联网相关政策法规,评论不得超过250字。

验证码: 注册用户
本类热门排行:
最新推荐文章:
网管论坛交流: