Golang 查询端口占用进程:高效定位端口使用情况
Golang 查询端口占用进程:高效定位端口使用情况
在 Golang 中,我们可以利用 net 和 os 包轻松查询端口的占用进程。本文将提供一个简单易懂的代码示例,帮助你快速掌握这项技能。
代码示例: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.')}
代码解析:
- 我们尝试监听 8080 端口。2. 如果端口已被占用,
net.ListenTCP函数会返回一个net.OpError类型的错误。3. 我们通过检查错误信息中是否包含 'address already in use' 来判断端口是否被占用。4. 如果端口被占用,我们解析错误信息以获取占用该端口的进程 ID 并打印出来。
注意事项:
- 此方法仅适用于查询 TCP 端口的占用情况。* 若要查询 UDP 端口的占用情况,可以使用
net.ListenUDP函数进行尝试监听,并根据返回的错误信息进行判断。
希望本文能帮助你更好地理解如何使用 Golang 查询端口占用进程。如果你有任何问题或建议,请随时留言!
原文地址: https://www.cveoy.top/t/topic/fKIJ 著作权归作者所有。请勿转载和采集!