首頁 >後端開發 >php教程 >用php聊QQ_PHP

用php聊QQ_PHP

WBOY
WBOY原創
2016-06-01 12:34:081027瀏覽
我也是最近才看到的,大家可以到网上搜索一下QQ的http协议,实现很简单,我只是稍微试了一下,写了以下几段代码,如果哪位有兴趣可以继续研究。如果有J2ME或者各大手机厂商的SDK,研究一下javaQQ也不错。最近要考试,只能先贴出来,先说明,未全部完成
<font size="2"><font face="Verdana">代码:</font><hr></font>
<?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;
}
}
?>
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn