方法一:使用net库
我们可以利用Golang中的`net`包来实现对一个端口的监听尝试。具体的代码如下: ```go package main import ( "fmt" "net" ) func main() { listener, err := net.Listen("tcp", ":8080") if err != nil { fmt.Println("端口被占用") return } defer listener.Close() fmt.Println("端口可用") } ``` 使用`net.Listen`函数时,如果端口已被占用,将返回一个错误。我们可以根据返回的错误信息进行相应的处理。方法一的优点是使用方便简单,适用于绝大部分场景。但是如果需要在多个地方重复判断端口是否被占用,就需要多次使用这段代码,会显得重复冗余。
方法二:使用netstat命令
除了使用Golang的库函数,我们还可以通过执行系统命令来判断端口是否被占用。在Linux或者macOS系统下,可以使用`netstat`命令来获取当前系统的网络连接信息。 下面是一个使用`exec.Command`函数执行系统命令的示例代码: ```go package main import ( "fmt" "os/exec" ) func main() { cmd := exec.Command("netstat", "-ano") out, _ := cmd.Output() output := string(out) if strings.Contains(output, ":8080") { fmt.Println("端口被占用") } else { fmt.Println("端口可用") } } ``` 这段代码通过执行`netstat`命令获取系统的网络连接信息,并进行字符串匹配来判断端口是否被占用。方法二的优点是不依赖于Golang的库函数,可以跨平台使用,但缺点是需要调用系统命令,对于一些特定场景可能存在兼容性问题。