Golang网络状态工具GOnetstat的Windows和Linux版本

Golang网络状态工具GOnetstat的Windows和Linux版本 简单的 Netstat 解析器,支持 Windows 和 Linux 系统。

https://github.com/abhayanoop/GOnetstat

1 回复

更多关于Golang网络状态工具GOnetstat的Windows和Linux版本的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


这是一个基于Go语言实现的跨平台网络状态解析工具,能够替代系统自带的netstat命令,支持Windows和Linux系统。它通过解析系统的网络连接信息,提供清晰的TCP/UDP连接状态展示。

核心特性:

  • 跨平台支持(Windows/Linux)
  • 解析TCP和UDP连接
  • 显示本地/远程地址和端口
  • 显示连接状态
  • 支持进程信息显示

示例代码展示基本用法:

package main

import (
    "fmt"
    "github.com/abhayanoop/GOnetstat"
)

func main() {
    // 获取TCP连接信息
    tcpConnections, err := GOnetstat.Tcp()
    if err != nil {
        panic(err)
    }

    // 打印TCP连接信息
    fmt.Println("TCP Connections:")
    for _, conn := range tcpConnections {
        fmt.Printf("Local: %s:%d -> Remote: %s:%d State: %s\n", 
            conn.Ip, 
            conn.Port, 
            conn.ForeignIp, 
            conn.ForeignPort, 
            conn.State)
    }

    // 获取UDP连接信息
    udpConnections, err := GOnetstat.Udp()
    if err != nil {
        panic(err)
    }

    // 打印UDP连接信息
    fmt.Println("\nUDP Connections:")
    for _, conn := range udpConnections {
        fmt.Printf("Local: %s:%d -> Remote: %s:%d\n", 
            conn.Ip, 
            conn.Port, 
            conn.ForeignIp, 
            conn.ForeignPort)
    }
}

该工具底层通过读取不同系统的网络状态文件来实现:

  • Linux: /proc/net/tcp/proc/net/udp
  • Windows: 使用系统API调用

输出示例:

TCP Connections:
Local: 127.0.0.1:8080 -> Remote: 192.168.1.100:5432 State: ESTABLISHED
Local: 0.0.0.0:22 -> Remote: 0.0.0.0:0 State: LISTEN

UDP Connections:
Local: 0.0.0.0:53 -> Remote: 0.0.0.0:0

这个工具对于网络调试和监控非常有用,特别是在需要跨平台部署的网络应用中。

回到顶部