golang如何利用原始套接字构造UDP包详解

2020-01-28 12:42:02王冬梅

下面我们需要发送自己构造的UDP包,可以使用net下的ListenPacket。


 listener, err := net.ListenPacket("ip4:udp", "192.168.1.104")
 if err != nil {
  log.Fatal(err)
 }
 defer listener.Close()
 
 //listener 实现了net.PacketConn接口
 r, err := ipv4.NewRawConn(c)
 if err != nil {
  log.Fatal(err)
 }

 //发送自己构造的UDP包
 if err = r.WriteTo(iph, append(udph[12:20], buff...), nil); err != nil {
  log.Fatal(err)
 }

这个实现只在linux和mac上测试过,windows上需要借助于第三方吧,比如winpcap。

结语

这里只给出了UDP的实现,TCP的实现比较复杂,以后也会给出TCP实现的例子。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对易采站长站的支持。