本文整理汇总了Golang中github.com/ghedo/go/pkt/packet.Buffer.Bytes方法的典型用法代码示例。如果您正苦于以下问题:Golang Buffer.Bytes方法的具体用法?Golang Buffer.Bytes怎么用?Golang Buffer.Bytes使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/ghedo/go/pkt/packet.Buffer
的用法示例。
在下文中一共展示了Buffer.Bytes方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: Pack
// Pack packets into their binary form. This will stack the packets before
// encoding them (see the Compose() method) and also calculate the checksums.
func Pack(pkts ...packet.Packet) ([]byte, error) {
var buf packet.Buffer
base_pkt, err := Compose(pkts...)
if err != nil {
return nil, err
}
tot_len := int(base_pkt.GetLength())
buf.Init(make([]byte, tot_len))
for i := len(pkts) - 1; i >= 0; i-- {
cur_pkt := pkts[i]
cur_len := int(cur_pkt.GetLength())
buf.SetOffset(tot_len - cur_len)
buf.NewLayer()
err := cur_pkt.Pack(&buf)
if err != nil {
return nil, err
}
}
buf.SetOffset(0)
return buf.Bytes(), nil
}
示例2: Unpack
func (p *Packet) Unpack(buf *packet.Buffer) error {
buf.ReadN(&p.DSAP)
buf.ReadN(&p.SSAP)
if buf.Bytes()[:1][0]&0x1 == 0 ||
buf.Bytes()[:1][0]&0x3 == 0x1 {
buf.ReadN(&p.Control)
} else {
var ctrl uint8
buf.ReadN(&ctrl)
p.Control = uint16(ctrl)
}
return nil
}