Golang:替代C#(。Net的)IPGlobalProperties.GetIPGlobalProperties()

时间:2017-10-10 19:50:43

标签: c# go

我正在重写Golang中的一个Windows服务(C#)。我几乎已经想出并重写了Go中的代码,但却陷入了一个我无法弄清楚golang替代方案的地方。

public static int GetNumberOfLocalEstablishedConnectionsByPort(string IPAddress, int Port)
    {
        int Result = 0;
        IPGlobalProperties ipProperties = IPGlobalProperties.GetIPGlobalProperties();
        TcpConnectionInformation[] tcpConnections = ipProperties.GetActiveTcpConnections();

        foreach (TcpConnectionInformation tcpInfo in tcpConnections)
        {
                if (tcpInfo.State == TcpState.Established && tcpInfo.LocalEndPoint.Port == Port) 
                {
                            Result++;
                }
        }

        return Result;
    }

基本上在这种方法中,我找到了基于IP地址和端口的活动连接数。

我正在寻求帮助,以便了解如何将此C#代码重写为Golang。我正在使用Windows操作系统并想要一个基于 Windows操作系统

的解决方案

1 个答案:

答案 0 :(得分:0)

为了找到活动连接的数量,C#中没有与上述Golang方法类似的等效包装器。

虽然我们可以使用系统调用实现此目的,但如果您是Linux用户,我们可以使用以下命令。

netstat -anp | grep :80 | grep ESTABLISHED | wc -l

但是,在windows os中,您可能会遇到一些问题,因为grepwc(字数统计)命令不起作用。当我将它作为Windows服务运行时,我遇到了这个问题。

对于Windows操作系统,以下命令有效。

netstat -nt | findstr :80  | findstr ESTABLISHED | find /v /c ""

要使/ v / c正常工作,您可能需要以管理员身份执行exe文件