-1

我有这样的包

    class Packet {
            private $DATASize;
            private $signature;
            private $version;
            private $HSIZE;
            private $SessionIDUser1;
            private $SessionIDUser2;
           }

我正在使用 UDP 协议。

4

1 回答 1

0

由于此类中没有方法,因此您可以对实例进行编码json_encode并将其作为字符串发送。在客户端只需解码和克隆。当类有方法时也可以这样做,但更复杂。

例子:

//server
$p = new Packet;
socket_sendto($sock, json_encode($p), strlen($p), 0, $ip, $port);

//client
socket_recvfrom($sock, $buf, $size, 0, $ip, $port);
$p = clone json_decode($bof); //class without methods
$p = new Packet;
$p->setAs(json_decode($bof) ); //class with methods: implement this method too.

编辑:

现在我看到你的字段是private,所以你需要实现 json 编码的方法。请参阅https://stackoverflow.com/a/7005915/2075420https://stackoverflow.com/a/9942303/2075420

于 2013-12-05T12:02:35.797 回答