123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- package udp
- import (
- "encoding/base64"
- "encoding/json"
- "net"
- )
- type UdpPacket struct {
- Content []byte `json:"-"`
- Src *net.UDPAddr `json:"-"`
- Dst *net.UDPAddr `json:"-"`
- EncodeContent string `json:"content"`
- SrcStr string `json:"src"`
- DstStr string `json:"dst"`
- }
- func NewUdpPacket(content []byte, src, dst *net.UDPAddr) *UdpPacket {
- up := &UdpPacket{
- Src: src,
- Dst: dst,
- EncodeContent: base64.StdEncoding.EncodeToString(content),
- SrcStr: src.String(),
- DstStr: dst.String(),
- }
- return up
- }
- func (up *UdpPacket) Pack() []byte {
- b, _ := json.Marshal(up)
- return b
- }
- func (up *UdpPacket) UnPack(packet []byte) error {
- err := json.Unmarshal(packet, &up)
- if err != nil {
- return err
- }
- up.Content, err = base64.StdEncoding.DecodeString(up.EncodeContent)
- if err != nil {
- return err
- }
- up.Src, err = net.ResolveUDPAddr("udp", up.SrcStr)
- if err != nil {
- return err
- }
- up.Dst, err = net.ResolveUDPAddr("udp", up.DstStr)
- if err != nil {
- return err
- }
- return nil
- }
|