Golang可以通过syscall包中的相关socket函数(Windows和Linux中syscall中网络编程的函数不太一样)来进行网络编
程,可以用我们熟悉的方法使用raw socket,因为最近在搞一些协议的学习,所以特意试了试,和普通的linux+C的
socket编程基本没什么区别。
代码如下:
package main
import (
"bytes"
"encoding/binary"
. "fmt"
"strconv"
"strings"
"syscall"
"unsafe"
)
type TCPHeader struct {
SrcPort uint16
DstPort uint16
SeqNum uint32
AckNum uint32
Offset uint8
Flag uint8
Window uint16
Checksum uint16
UrgentPtr uint16
}
type PsdHeader struct {
SrcAddr uint32
DstAddr uint32
Zero uint8
ProtoType uint8
TcpLength uint16
}
func in