- 注意差错校验CheckSum在总字节为奇数时,需要将最后一个byte左移8位凑成16位
- 在操作binary时注意网络字节序问题
github地址 https://github.com/openex27/Ping/blob/master/Ping.go
package main
import (
"bytes"
"encoding/binary"
"fmt"
"net"
"os"
"strconv"
"time"
)
const (
MAX_PG = 2000
)
type ICMP struct {
Type uint8
Code uint8
Checksum uint16
Identifier uint16
SequenceNum uint16
}
var (
originBytes []byte
)
func init() {
originBytes = make([]byte, MAX_PG)
}
func CheckSum(data []byte) (rt uint16) {