當前位置: 首頁>>代碼示例>>PHP>>正文


PHP protocol\Packet類代碼示例

本文整理匯總了PHP中raklib\protocol\Packet的典型用法代碼示例。如果您正苦於以下問題:PHP Packet類的具體用法?PHP Packet怎麽用?PHP Packet使用的例子?那麽, 這裏精選的類代碼示例或許可以為您提供幫助。


在下文中一共展示了Packet類的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的PHP代碼示例。

示例1: sendPacket

 public function sendPacket(Packet $packet, $dest, $port)
 {
     $packet->encode();
     $this->sendBytes += $this->socket->writePacket($packet->buffer, $dest, $port);
 }
開發者ID:kakichi,項目名稱:ClearSky,代碼行數:5,代碼來源:SessionManager.php

示例2: handlePacket

 public function handlePacket(Packet $packet)
 {
     $this->isActive = \true;
     $this->lastUpdate = \microtime(\true);
     if ($this->state === self::STATE_CONNECTED or $this->state === self::STATE_CONNECTING_2) {
         if ($packet::$ID >= 0x80 and $packet::$ID <= 0x8f and $packet instanceof DataPacket) {
             //Data packet
             $packet->decode();
             if ($packet->seqNumber < $this->windowStart or $packet->seqNumber > $this->windowEnd or isset($this->receivedWindow[$packet->seqNumber])) {
                 return;
             }
             $diff = $packet->seqNumber - $this->lastSeqNumber;
             unset($this->NACKQueue[$packet->seqNumber]);
             $this->ACKQueue[$packet->seqNumber] = $packet->seqNumber;
             $this->receivedWindow[$packet->seqNumber] = $packet->seqNumber;
             if ($diff !== 1) {
                 for ($i = $this->lastSeqNumber + 1; $i < $packet->seqNumber; ++$i) {
                     if (!isset($this->receivedWindow[$i])) {
                         $this->NACKQueue[$i] = $i;
                     }
                 }
             }
             if ($diff >= 1) {
                 $this->lastSeqNumber = $packet->seqNumber;
                 $this->windowStart += $diff;
                 $this->windowEnd += $diff;
             }
             foreach ($packet->packets as $pk) {
                 $this->handleEncapsulatedPacket($pk);
             }
         } else {
             if ($packet instanceof ACK) {
                 $packet->decode();
                 foreach ($packet->packets as $seq) {
                     if (isset($this->recoveryQueue[$seq])) {
                         foreach ($this->recoveryQueue[$seq]->packets as $pk) {
                             if ($pk instanceof EncapsulatedPacket and $pk->needACK and $pk->messageIndex !== \null) {
                                 unset($this->needACK[$pk->identifierACK][$pk->messageIndex]);
                             }
                         }
                         unset($this->recoveryQueue[$seq]);
                     }
                 }
             } elseif ($packet instanceof NACK) {
                 $packet->decode();
                 foreach ($packet->packets as $seq) {
                     if (isset($this->recoveryQueue[$seq])) {
                         $pk = $this->recoveryQueue[$seq];
                         $pk->seqNumber = $this->sendSeqNumber++;
                         $this->packetToSend[] = $pk;
                         unset($this->recoveryQueue[$seq]);
                     }
                 }
             }
         }
     } elseif ($packet::$ID > 0x0 and $packet::$ID < 0x80) {
         //Not Data packet :)
         $packet->decode();
         if ($packet instanceof UNCONNECTED_PING) {
             $pk = new UNCONNECTED_PONG();
             $pk->serverID = $this->sessionManager->getID();
             $pk->pingID = $packet->pingID;
             $pk->serverName = $this->sessionManager->getName(true);
             $this->sendPacket($pk);
             $pk->serverName = $this->sessionManager->getName(false);
             $this->sendPacket($pk);
         } elseif ($packet instanceof OPEN_CONNECTION_REQUEST_1) {
             $packet->protocol;
             //TODO: check protocol number and refuse connections
             $pk = new OPEN_CONNECTION_REPLY_1();
             $pk->mtuSize = $packet->mtuSize;
             $pk->serverID = $this->sessionManager->getID();
             $this->sendPacket($pk);
             $this->state = self::STATE_CONNECTING_1;
         } elseif ($this->state === self::STATE_CONNECTING_1 and $packet instanceof OPEN_CONNECTION_REQUEST_2) {
             $this->id = $packet->clientID;
             if ($packet->serverPort === $this->sessionManager->getPort() or !$this->sessionManager->portChecking) {
                 $this->mtuSize = \min(\abs($packet->mtuSize), 1464);
                 //Max size, do not allow creating large buffers to fill server memory
                 $pk = new OPEN_CONNECTION_REPLY_2();
                 $pk->mtuSize = $this->mtuSize;
                 $pk->serverID = $this->sessionManager->getID();
                 $pk->clientAddress = $this->address;
                 $pk->clientPort = $this->port;
                 $this->sendPacket($pk);
                 $this->state = self::STATE_CONNECTING_2;
             }
         }
     }
 }
開發者ID:1455931078,項目名稱:Genisys,代碼行數:90,代碼來源:Session.php

示例3: decode

 public function decode()
 {
     parent::decode();
     $this->clientID = Binary::readLong($this->get(8));
     $this->sendPing = Binary::readLong($this->get(8));
     $this->useSecurity = \ord($this->get(1)) > 0;
 }
開發者ID:xpyctum,項目名稱:PocketMinePlusPlus,代碼行數:7,代碼來源:CLIENT_CONNECT_DataPacket__32bit.php

示例4: decode

 public function decode()
 {
     parent::decode();
     $this->clientID = Binary::readLong($this->get(8));
     $this->session = Binary::readLong($this->get(8));
     $this->unknown = $this->get(1);
 }
開發者ID:Hydreon,項目名稱:PMSoft238,代碼行數:7,代碼來源:CLIENT_CONNECT_DataPacket.php

示例5: decode

 public function decode()
 {
     parent::decode();
     $this->offset += 16;
     //Magic
     $this->protocol = \ord($this->get(1));
     $this->mtuSize = \strlen($this->get(\true)) + 18;
 }
開發者ID:kakichi,項目名稱:ClearSky,代碼行數:8,代碼來源:OPEN_CONNECTION_REQUEST_1.php

示例6: decode

 public function decode()
 {
     parent::decode();
     $this->offset += 16;
     //Magic
     $this->protocol = $this->getByte();
     $this->mtuSize = strlen($this->get(true)) + 18;
 }
開發者ID:NewDelion,項目名稱:PocketMine-0.13.x,代碼行數:8,代碼來源:OPEN_CONNECTION_REQUEST_1.php

示例7: decode

 public function decode()
 {
     parent::decode();
     $this->pingID = $this->getLong();
     $this->serverID = $this->getLong();
     $this->offset += 16;
     //magic
     $this->serverName = $this->getString();
 }
開發者ID:NewDelion,項目名稱:PocketMine-0.13.x,代碼行數:9,代碼來源:UNCONNECTED_PONG.php

示例8: decode

 public function decode()
 {
     parent::decode();
     $this->offset += 16;
     //Magic
     $this->getAddress($this->serverAddress, $this->serverPort);
     $this->mtuSize = \unpack("n", $this->get(2))[1];
     $this->clientID = Binary::readLong($this->get(8));
 }
開發者ID:xpyctum,項目名稱:PocketMinePlusPlus,代碼行數:9,代碼來源:OPEN_CONNECTION_REQUEST_2__64bit.php

示例9: decode

 public function decode()
 {
     parent::decode();
     $this->offset += 16;
     //Magic
     $this->getAddress($this->serverAddress, $this->serverPort);
     $this->mtuSize = $this->getShort();
     $this->clientID = $this->getLong();
 }
開發者ID:ClearSkyTeam,項目名稱:ClearSky,代碼行數:9,代碼來源:OPEN_CONNECTION_REQUEST_2.php

示例10: decode

 public function decode()
 {
     parent::decode();
     $this->pingID = Binary::readLong($this->get(8));
     $this->serverID = Binary::readLong($this->get(8));
     $this->offset += 16;
     //magic
     $this->serverName = $this->getString();
 }
開發者ID:kakichi,項目名稱:ClearSky,代碼行數:9,代碼來源:UNCONNECTED_PONG.php

示例11: decode

 public function decode()
 {
     parent::decode();
     $this->offset += 16;
     //Magic
     $this->serverID = Binary::readLong($this->get(8));
     $this->clientPort = unpack("n", $this->get(2))[1];
     $this->mtuSize = unpack("n", $this->get(2))[1];
     //server security
 }
開發者ID:Hydreon,項目名稱:PMSoft238,代碼行數:10,代碼來源:OPEN_CONNECTION_REPLY_2.php

示例12: decode

 public function decode()
 {
     parent::decode();
     $this->offset += 16;
     //Magic
     $this->serverID = Binary::readLong($this->get(8));
     \ord($this->get(1));
     //security
     $this->mtuSize = \unpack("n", $this->get(2))[1];
 }
開發者ID:TylerAndrew,項目名稱:Steadfast2,代碼行數:10,代碼來源:OPEN_CONNECTION_REPLY_1.php

示例13: decode

 public function decode()
 {
     parent::decode();
     $this->offset += 16;
     //Magic
     $this->serverID = $this->getLong();
     $this->clientPort = $this->getShort();
     $this->mtuSize = $this->getShort();
     //server security
 }
開發者ID:hlogeon,項目名稱:PocketMineJs-MP,代碼行數:10,代碼來源:OPEN_CONNECTION_REPLY_2.php

示例14: decode

 public function decode()
 {
     parent::decode();
     $this->getAddress($this->address, $this->port);
     for ($i = 0; $i < 10; ++$i) {
         $this->getAddress($addr, $port, $version);
         $this->systemAddresses[$i] = [$addr, $port, $version];
     }
     $this->sendPing = Binary::readLong($this->get(8));
     $this->sendPong = Binary::readLong($this->get(8));
 }
開發者ID:TylerAndrew,項目名稱:Steadfast2,代碼行數:11,代碼來源:CLIENT_HANDSHAKE_DataPacket.php

示例15: decode

 public function decode()
 {
     parent::decode();
     $this->cookie = $this->get(4);
     $this->security = $this->get(1);
     $this->port = unpack("n", $this->get(2))[1];
     $this->dataArray0 = $this->get(ord($this->get(1)));
     $this->dataArray = $this->getDataArray(9);
     $this->timestamp = $this->get(2);
     $this->session2 = Binary::readLong($this->get(8));
     $this->session = Binary::readLong($this->get(8));
 }
開發者ID:Hydreon,項目名稱:PMSoft238,代碼行數:12,代碼來源:CLIENT_HANDSHAKE_DataPacket.php


注:本文中的raklib\protocol\Packet類示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。