Golang Преобразование gopacket udpLayer в байты и отправка

Я использую API gopacket/ Layers для извлечения данных обновления из пакета, а затем снова отправляю его через другой поток udp. Я не уверен, правильно ли я это делаю, также получаю некоторые ошибки, если кто-то может указать мне на правильное направление, которое было бы здорово, мой код

conn, err := net.Dial("udp", 1.1.1.1)

udp, _ := updpLayer.(*layers.UDP)

/*now if i send it like this*/

conn.Write(udp)
/*i get the errors: cannot use udp (type *layers.UDP) as type []byte in argument to conn.Write*/

/*I tried to convert to bytes using unsafe*/

con := *(*[unsafe.Sizeof(udp)]byte)(unsafe.Pointer(&udp))

/* I get cannot use conv (type [8]byte) as type []byte in argument to conn.Write */

/* I used ecoding/gob, but is it sending it as a byte stream?*/

encoder := gob.NewEncoder(conn)
encoder.Encode(udp) //or Encode(udp)

1 ответ

Решение

updpLayer не представляет данные напрямую, поэтому пытаться преобразовать их в байты бессмысленно. Прочитайте Contents или же Payload поле вместо

Другие вопросы по тегам