Golang 查询端口占用进程:高效定位端口使用情况

在 Golang 中,我们可以利用 netos 包轻松查询端口的占用进程。本文将提供一个简单易懂的代码示例,帮助你快速掌握这项技能。

代码示例:gopackage main

import ( 'fmt' 'net' 'os' 'strings')

func main() { port := '8080' listener, err := net.ListenTCP('tcp', &net.TCPAddr{ IP: net.ParseIP('0.0.0.0'), Port: 8080, })

if err != nil {		opErr, ok := err.(*net.OpError)		if !ok {			fmt.Println('Failed to listen:', err)			return		}

	if strings.Contains(opErr.Error(), 'address already in use') {			pid := strings.TrimPrefix(opErr.Err.Error(), 'bind: ')			fmt.Println('Port', port, 'is already in use by process', pid)			return		}	}

defer listener.Close()

fmt.Println('Port', port, 'is available.')}

代码解析:

  1. 我们尝试监听 8080 端口。2. 如果端口已被占用,net.ListenTCP 函数会返回一个 net.OpError 类型的错误。3. 我们通过检查错误信息中是否包含 'address already in use' 来判断端口是否被占用。4. 如果端口被占用,我们解析错误信息以获取占用该端口的进程 ID 并打印出来。

注意事项:

  • 此方法仅适用于查询 TCP 端口的占用情况。* 若要查询 UDP 端口的占用情况,可以使用 net.ListenUDP 函数进行尝试监听,并根据返回的错误信息进行判断。

希望本文能帮助你更好地理解如何使用 Golang 查询端口占用进程。如果你有任何问题或建议,请随时留言!

Golang 查询端口占用进程:高效定位端口使用情况

原文地址: https://www.cveoy.top/t/topic/fKIJ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录