Работа с пакетами в PHP — различия между версиями
Материал из Perfect World Develop Wiki
Строка 22: | Строка 22: | ||
?></syntaxhighlight> | ?></syntaxhighlight> | ||
=== Замечания по WritePacket === | === Замечания по WritePacket === | ||
− | * Для работы с пакетами gdeliveryd следует установить true значению | + | * Для работы с пакетами gdeliveryd следует установить true значению passestablished. |
<syntaxhighlight lang="php">... | <syntaxhighlight lang="php">... | ||
$packet = new WritePacket(); | $packet = new WritePacket(); | ||
− | $packet -> | + | $packet -> passestablished = true; |
...</syntaxhighlight> | ...</syntaxhighlight> | ||
* Для игнорирования ответного пакета (применительно к пакетам, у которых вообще нет ответных) следует установить false значению getresponse. | * Для игнорирования ответного пакета (применительно к пакетам, у которых вообще нет ответных) следует установить false значению getresponse. |
Версия 14:30, 20 октября 2015
PHP
Пример работы
Для примера рассмотрим получение никнейма персонажа по его ID из сервиса gamedbd через пакет GetRoleBaseArg.
<? include("packet_class.php"); $GetRoleBase = new WritePacket(); $GetRoleBase -> WriteUInt32(-1); // always $GetRoleBase -> WriteUInt32(1024); // userid $GetRoleBase -> Pack(0xBC5); // opcode if (!$GetRoleBase -> Send("localhost", 29400)) // send to gamedbd return; $GetRoleBase_Re = new ReadPacket($GetRoleBase); // reading packet from stream $packetinfo = $GetRoleBase_Re -> ReadPacketInfo(); // read opcode and length $GetRoleBase_Re -> ReadUInt32(); // always $GetRoleBase_Re -> ReadUInt32(); // retcode $GetRoleBase_Re -> ReadUByte(); // version $GetRoleBase_Re -> ReadUInt32(); // id echo $GetRoleBase_Re -> ReadUString(); // show rolename ?>
Замечания по WritePacket
- Для работы с пакетами gdeliveryd следует установить true значению passestablished.
... $packet = new WritePacket(); $packet -> passestablished = true; ...
- Для игнорирования ответного пакета (применительно к пакетам, у которых вообще нет ответных) следует установить false значению getresponse.
... $packet = new WritePacket(); $packet -> getresponse = false; ...