好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > golang端口占用檢測的使用

golang端口占用檢測的使用

熱門標簽:湛江crm外呼系統排名 重慶慶云企業400電話到哪申請 鄭州智能語音電銷機器人價格 上海極信防封電銷卡價格 寧波語音外呼系統公司 仙桃400電話辦理 地圖標注免費定制店 不封卡外呼系統 宿遷便宜外呼系統代理商

         在運維開發的過程中,經常碰到這樣的情況:啟動某個應用前,需要先檢測一下端口是否被其他的應用占用了,若占用了,能否得到占用進程的PID。后續可以根據這個PID,查找是哪個應用占據這端口,然后KILL掉。非常簡單的需求,思路是:

利用 netstat 命令獲取當前的相關端口號的PID,然后正則表達式過濾出相關的PID即可

netstat -ano | findstr 8099

輸出如下:

以windows 系統下為例,linux系統下,修改相關參數即可。代碼如下:

// 傳入查詢的端口號
// 返回端口號對應的進程PID,若沒有找到相關進程,返回-1
func portInUse(portNumber int) int {
	res := -1
	var outBytes bytes.Buffer
	cmdStr := fmt.Sprintf("netstat -ano -p tcp | findstr %d", portNumber)
	cmd := exec.Command("cmd", "/c", cmdStr)
	cmd.Stdout = outBytes
	cmd.Run()
	resStr := outBytes.String()
	r := regexp.MustCompile(`\s\d+\s`).FindAllString(resStr, -1)
	if len(r) > 0 {
		pid, err := strconv.Atoi(strings.TrimSpace(r[0]))
		if err != nil {
			res = -1
		} else {
			res = pid
		}
	}
	return res
}

補:golang 實現端口掃描

對端口進行掃描基于連接,在go中我們可以使用net.Dial進行判斷,如果返回的結果沒有錯誤,那么這個端口就應該是打開的,如果返回了錯誤,那么可以說明這個端口是關閉的,代碼如下

func ScanPort(protocol string, hostname string, port int) bool {
 fmt.Printf("scanning port %d \n", port)
 p := strconv.Itoa(port)
 addr := net.JoinHostPort(hostname, p)
 conn, err := net.DialTimeout(protocol, addr, 3*time.Second)
 if err != nil {
 return false
 }
 defer conn.Close()
 return true
}

到此這篇關于golang端口占用檢測的使用的文章就介紹到這了,更多相關golang端口占用檢測內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • go語言制作端口掃描器
  • Go語言實現的簡單網絡端口掃描方法
  • GO語言實現的端口掃描器分享

標簽:青海 物業服務 海南 安康 西雙版納 電子產品 儋州 遼寧

巨人網絡通訊聲明:本文標題《golang端口占用檢測的使用》,本文關鍵詞  golang,端口,占用,檢測,的,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《golang端口占用檢測的使用》相關的同類信息!
  • 本頁收集關于golang端口占用檢測的使用的相關信息資訊供網民參考!
  • 推薦文章