gitalk icon indicating copy to clipboard operation
gitalk copied to clipboard

几种使用Go发送IP包的方法

Open utterances-bot opened this issue 2 years ago • 3 comments

几种使用Go发送IP包的方法

我们使用Go标准库中的net包,很容易发送UDP和TCP的packet,以及在它们基础上开发应用层的程序,比如HTTP、RPC等框架和程序,甚至我们可以利用官方扩展包golang.oef/x/net/icmp,专门进行icmp packet的发送和接收,不过,有时候我们想进行更低层次的网络通讯,这个时候我们就

https://colobu.com/2023/05/13/send-IP-packets-in-Go/

utterances-bot avatar May 15 '23 01:05 utterances-bot

老师,你好。 最后一行:“每必要 ...” -> “没必要 ...”

XuJinNet avatar May 15 '23 01:05 XuJinNet

老师,你好。 最后一行:“每必要 ...” -> “没必要 ...” 收到

smallnest avatar May 15 '23 08:05 smallnest

试了下,才知道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就可以,话说微软这样限制是出于什么考虑?

lysShub avatar Jun 12 '23 03:06 lysShub