gitalk
gitalk copied to clipboard
几种使用Go发送IP包的方法
几种使用Go发送IP包的方法
我们使用Go标准库中的net包,很容易发送UDP和TCP的packet,以及在它们基础上开发应用层的程序,比如HTTP、RPC等框架和程序,甚至我们可以利用官方扩展包golang.oef/x/net/icmp,专门进行icmp packet的发送和接收,不过,有时候我们想进行更低层次的网络通讯,这个时候我们就
老师,你好。 最后一行:“每必要 ...” -> “没必要 ...”
老师,你好。 最后一行:“每必要 ...” -> “没必要 ...” 收到
试了下,才知道Windows 不能 bind raw-tcp-socket
conn, err := net.ListenIP("ip4:tcp", &net.IPAddr{IP: net.IPv4(127, 0, 0, 1)})
if err != nil {
panic(err)
}
// panic: listen ip4:tcp 127.0.0.1: bind: An invalid argument was supplied.
用syscall 也是
fd, err := syscall.Socket(syscall.AF_INET, syscall.SOCK_RAW, syscall.IPPROTO_TCP)
if err != nil {
panic(err)
}
laddr := &syscall.SockaddrInet4{Addr: [4]byte{127, 0, 0, 1}}
err = syscall.Bind(fd, laddr)
if err != nil {
panic(err)
}
UDP就可以,话说微软这样限制是出于什么考虑?