ゲームサーバーを作成しようとしています。クライアントに返信するパケットを作成する必要があります。私はすべてのデータをbytes.Buffer
に書いています。そして、バイトを取得してクライアントに送る前に、パケットの合計サイズに接頭辞を付けたいと思います。バイトの特定のオフセットで書き込みます。バッファー
私はこのような何かを考えていた:
// is it bad to call `var b bytes.Buffer` every time I create a packet?
func CreatePacket() []byte {
var b bytes.Buffer
// size
binary.Write(b, binary.LittleEndian, 0) // insert at end
// body (variable number of writes)
binary.Write(b, binary.LittleEndian, data)
// update the size at offset 0
binary.Write(b, binary.LittleEndian, b.Len())
return b.Bytes()
}
しかし、私はオフセットを求めるまたは変更する任意の方法を見つけることができません。
これは機能しません、なぜですか?
var packet = b.Bytes()
// the size is really at offset 2. offset 0 is an ID.
binary.LittleEndian.PutUint16(packet, uint16(0xF3))
binary.LittleEndian.PutUint16(packet, uint16(len(packet)))
ネヴァーマインド最後の質問に、私はそれを考え出しました。 'binary.LittleEndian.PutUint16(packet [2:]、uint16(len(packet)))' – majidarif