2017-10-26 21 views
0

gopacket/layers api를 사용하여 패킷의 업데이트 데이터를 추출한 다음 다른 UDP 스트림을 통해 다시 전송합니다. 올바른지 또는하지 않는지 확실하지 않습니다. 사람이 직접 데이터를 표현하지 않는 큰 내 코드Golang gopacket udpLayer를 바이트로 변환하고 보내기

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) 
+0

어떤 오류가 있습니까? –

+0

[콘텐츠 및 페이로드 필드] (https://godoc.org/github.com/google/gopacket/layers#BaseLayer)를 보았습니까? – Peter

+0

@Peter ya 나는 그것이 내가 원했던 것을 정확하게 나에게 주었다. – octain

답변

1

updpLayer 것이 올바른 방향으로 날 지점 수 있다면 그래서 바이트로 변환하려고, 약간의 오차가 받고하는 것은 무의미하다. 대신 the Contents or Payload field을 읽으십시오.