Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- //error_reporting(0);
- header("Content-type:text/html;charset=utf-8");
- function __autoload($class_name) {
- require_once ('/workspace/minecraft/pocket/src/'.str_replace('\\','/',$class_name) . '.php');
- }
- function test($f=array()){
- $magic = "\x00\xff\xff\x00\xfe\xfe\xfe\xfe\xfd\xfd\xfd\xfd\x12\x34\x56\x78";
- $re = null;
- $config=array_merge(array('ip'=>'192.168.54.245','port'=>19121),$f);
- $client = @stream_socket_client("udp://".$config['ip'].":".$config['port'], $errno, $errstr); //非阻塞Socket
- if(!$client){
- $re = false;
- }else{
- stream_set_timeout($client , 1);
- //-----------------0x05 0x06
- $r1 = new raklib\protocol\OPEN_CONNECTION_REQUEST_1();
- $r1->encode();
- $date_send = $r1->buffer;
- fwrite($client, $date_send);
- $data_receive = fread($client, 65535);
- echo "\r\n".'send_id:'.'0x'.dechex($r1::$ID).' send_len:'.strlen($date_send).' receive_len:'.strlen($data_receive)."\r\n";
- if ($data_receive != "") {
- var_dump('0x'.dechex(ord($data_receive{0})));
- $rs1 = new raklib\protocol\OPEN_CONNECTION_REPLY_1();
- $rs1->buffer=$data_receive;
- $rs1->decode();
- var_dump($rs1);
- }else{
- $re = 'no_data';
- }
- //-----------------0x07 0x08
- $r2 = new raklib\protocol\OPEN_CONNECTION_REQUEST_2();
- $r2->serverAddress=$config['ip'];
- $r2->serverPort=$config['port'];
- $r2->encode();
- $date_send = $r2->buffer;
- fwrite($client, $date_send);
- $data_receive = fread($client, 65535);
- echo "\r\n".'send_id:'.'0x'.dechex($r2::$ID).' send_len:'.strlen($date_send).' receive_len:'.strlen($data_receive)."\r\n";
- if ($data_receive != "") {
- var_dump('0x'.dechex(ord($data_receive{0})));
- $rs2 = new raklib\protocol\OPEN_CONNECTION_REPLY_2();
- $rs2->buffer=$data_receive;
- $rs2->decode();
- var_dump($rs2);
- }else{
- $re = 'no_data';
- }
- //-----------------0x09 0x10
- $pk = new raklib\protocol\CLIENT_CONNECT_DataPacket();
- $pk->clientID=1343475902;
- $pk->sendPing=21310322131032;
- $pk->encode();
- $sendPacket = new raklib\protocol\EncapsulatedPacket();
- $sendPacket->reliability = 0;
- $sendPacket->buffer = $pk->buffer;
- $packet = new raklib\protocol\DATA_PACKET_0();
- if ($sendPacket->needACK) {
- $packet->packets[] = clone $sendPacket;
- $sendPacket->needACK = false;
- } else {
- $packet->packets[] = $sendPacket->toBinary();
- }
- $packet->encode();
- $date_send = $packet->buffer;
- fwrite($client, $date_send);
- $data_receive = fread($client, 65535);
- echo "\r\n".'send_id:'.'0x'.dechex($pk::$ID).' send_len:'.strlen($date_send).' receive_len:'.strlen($data_receive)."\r\n";
- if ($data_receive != "") {
- //多个合成包
- var_dump('0x'.dechex(ord($data_receive{0})));
- $packet = new raklib\protocol\DATA_PACKET_0();
- $packet->buffer=$data_receive;
- $packet->decode();
- // var_dump($packet);
- //压缩包
- var_dump($packet->packets[0]);
- var_dump('0x'.dechex(ord($packet->packets[0]->buffer{0})));
- // $sendPacket = new raklib\protocol\EncapsulatedPacket();
- // var_dump($sendPacket->fromBinary($packet->packets[0]->buffer));
- //数据包
- $rs = new raklib\protocol\SERVER_HANDSHAKE_DataPacket();
- $rs->buffer=$packet->packets[0]->buffer;
- $rs->decode();
- var_dump($rs);
- }else{
- $re = 'no_data';
- }
- //-----------------0x13
- $pk = new raklib\protocol\CLIENT_HANDSHAKE_DataPacket();
- $pk->address=$config['ip'];
- $pk->port=$config['port'];
- $pk->sendPing=$rs->sendPing;
- $pk->sendPong=bcadd($rs->sendPing, "1000");;
- $pk->encode();
- $sendPacket = new raklib\protocol\EncapsulatedPacket();
- $sendPacket->reliability = 0;
- $sendPacket->buffer = $pk->buffer;
- $packet = new raklib\protocol\DATA_PACKET_0();
- if ($sendPacket->needACK) {
- $packet->packets[] = clone $sendPacket;
- $sendPacket->needACK = false;
- } else {
- $packet->packets[] = $sendPacket->toBinary();
- }
- $packet->encode();
- $date_send = $packet->buffer;
- fwrite($client, $date_send);
- echo "\r\n".'send_id:'.'0x'.dechex($pk::$ID).' send_len:'.strlen($date_send)."\r\n";
- //-----------------0x82
- $pk = new pocketmine\network\protocol\LoginPacket();
- $pk->username='forthxu';
- $pk->protocol1=27;
- $pk->protocol2=27;
- $pk->clientId=1299218856;
- $pk->slim=true;
- $pk->encode();
- $sendPacket = new raklib\protocol\EncapsulatedPacket();
- $sendPacket->reliability = 0;
- $sendPacket->buffer = $pk->buffer;
- $packet = new raklib\protocol\DATA_PACKET_4();
- // if ($sendPacket->needACK) {
- // $packet->packets[] = clone $sendPacket;
- // $sendPacket->needACK = false;
- // } else {
- $packet->packets[] = $sendPacket->toBinary();
- // }
- $packet->encode();
- $date_send = $packet->buffer;
- fwrite($client, $date_send);
- $data_receive = fread($client, 65535);
- echo "\r\n".'send_id:'.'0x'.dechex($pk::NETWORK_ID).' send_len:'.strlen($date_send).' receive_len:'.strlen($data_receive)."\r\n";
- if ($data_receive != "") {
- var_dump('0x'.dechex(ord($data_receive{0})));
- }else{
- $re = 'no_data';
- }
- }
- fclose($client);
- $re='end';
- return $re;
- }
- $f=array();
- var_dump(test($f));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement