在 GO 中通过原始套接字读取 TCP 数据包

我正在研究 GO 中的原始套接字。我希望能够读取到我的计算机的所有 TCP 数据包(OSX,en0:192.168.1.65)


如果我将协议从 tcp 切换到 icmp,我会得到数据包。为什么我的代码没有读取数据包?


package main


import (

"fmt"

"net"

)


func main() {


    netaddr, err := net.ResolveIPAddr("ip4", "192.168.1.65")

    if err != nil {

        fmt.Println(err)

    }


    conn, err := net.ListenIP("ip4:tcp", netaddr)

    if err != nil {

        fmt.Println(err)

    }


    buf := make([]byte, 2048)

    for {

        numRead, recvAddr, err := conn.ReadFrom(buf)

        if err != nil {

            fmt.Println(err)

        }

        if recvAddr != nil {

            fmt.Println(recvAddr)

        }

        s := string(buf[:numRead])

        fmt.Println(s)

    }

}


茅侃侃
浏览 357回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go