最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python實現(xiàn)Windows端口監(jiān)聽程序

 更新時間:2025年05月09日 09:12:52   作者:CATTLECODE  
這篇文章主要為大家詳細介紹了如何使用Python實現(xiàn)Windows端口監(jiān)聽程序,從而打印出對本機處于監(jiān)聽狀態(tài)的端口,進程ID和程序名稱,感興趣的可以了解下

1、安裝庫

pip install tabulate

2、代碼實現(xiàn)

#!/usr/bin/env python
# -*- coding: utf-8 -*-
 
"""
Windows端口監(jiān)聽程序
顯示本機處于監(jiān)聽狀態(tài)的端口,進程ID和程序名稱
"""
 
import subprocess
import re
import os
import sys
from tabulate import tabulate
 
def get_listening_ports():
    """
    獲取所有處于監(jiān)聽狀態(tài)的端口信息
    返回包含端口、PID和程序名稱的列表
    """
    try:
        # 使用netstat命令獲取所有TCP監(jiān)聽端口
        netstat_output = subprocess.check_output(
            'netstat -ano -p tcp | findstr "LISTENING"',
            shell=True, 
            text=True
        )
        
        # 解析netstat輸出
        port_info = []
        for line in netstat_output.splitlines():
            # 清理并分割行
            parts = re.split(r'\s+', line.strip())
            if len(parts) >= 5:
                # 提取本地地址和PID
                local_address = parts[1]
                pid = parts[4]
                
                # 從本地地址中提取端口
                if ':' in local_address:
                    port = local_address.split(':')[-1]
                    
                    # 獲取進程名稱
                    try:
                        process_info = subprocess.check_output(
                            f'tasklist /fi "PID eq {pid}" /fo csv /nh',
                            shell=True,
                            text=True
                        )
                        
                        # 解析進程信息
                        if process_info and '","' in process_info:
                            process_name = process_info.split('","')[0].strip('"')
                            port_info.append({
                                'port': port,
                                'pid': pid,
                                'program': process_name
                            })
                    except subprocess.SubprocessError:
                        port_info.append({
                            'port': port,
                            'pid': pid,
                            'program': 'Unknown'
                        })
        
        return port_info
    
    except subprocess.SubprocessError as e:
        print(f"獲取端口信息時出錯: {e}")
        return []
 
def display_port_info(port_info):
    """
    以表格形式顯示端口信息
    """
    if not port_info:
        print("未找到監(jiān)聽中的端口")
        return
    
    # 準備表格數(shù)據(jù)
    table_data = []
    for info in port_info:
        table_data.append([
            info['port'],
            info['pid'],
            info['program']
        ])
    
    # 按端口號排序
    table_data.sort(key=lambda x: int(x[0]) if x[0].isdigit() else float('inf'))
    
    # 顯示表格
    headers = ["端口", "進程ID", "程序名稱"]
    print(tabulate(table_data, headers=headers, tablefmt="grid"))
 
def main():
    """
    主函數(shù)
    """
    print("正在獲取本機監(jiān)聽端口信息...\n")
    port_info = get_listening_ports()
    display_port_info(port_info)
 
if __name__ == "__main__":
    try:
        main()
    except KeyboardInterrupt:
        print("\n程序被用戶中斷")
    except Exception as e:
        print(f"程序執(zhí)行出錯: {e}")
        sys.exit(1)

3、效果如下

4、知識延展

python監(jiān)聽端口并重啟服務腳本

通過python運行系統(tǒng)命令,netstat -aon|findstr 端口號,查看端口是否占用,如果占用著,說明服務沒掛,不做處理,sleep設置的時間,然后再重新運行查看端口占用命令;如果沒占用,說明服務掛了,重新運行啟動腳本,xxxx.bat,啟動服務。

依賴包:

  • os(windows命令)
  • time(定時)

代碼:

######################
# 根據(jù)端口自動重啟腳本~ #
######################
import os
import time

port = input("\n>>>請輸入端口: \n")
# C:/Users/syp1293/Desktop/configfile/center.bat
bat_path = input("\n>>>請輸入bat文件路徑: \n")
time_u = input("\n>>>請輸入間隔時間: \n")
while True:
    with os.popen('netstat -aon|findstr "' + port + '"') as res:
        res = res.read().split('\n')
    result = []
    if res[0] == '':
        # 不存在端口占用,啟動服務
        os.system('start ' + bat_path)
        time.sleep(120)
        continue
    else:
        for line in res:
            # print(line)
            temp = [i for i in line.split(' ') if i != '']
            if len(temp) > 4:
                #  result.append({'pid': temp[4], 'address': temp[1], 'state': temp[3]})
                print('PID:', temp[4])
    # print('sleeping...')
    time.sleep(int(time_u))

生成exe文件,并且啟動后顯示為命令行。

pyinstaller -F osport.py

Python socket端口監(jiān)聽

實現(xiàn)代碼

import struct
import socket
import time
import multiprocessing as mp
SERVER_IP = "192.168.1.33"
PORT_BASE = 30000
import os
def recvall(conn, n):
    # Helper function to recv n bytes or return None if EOF is hit
    data = b''
 
    while len(data) < n:
        packet = conn.recv(n - len(data))
        if not packet:
            #print("hahahah","come here")
            break
        data += packet
        #print(len(data))
    #print("result ======",len(data))
    return data
 
def recv_data(conn):
    # result = result.decode("utf8")
    data = b''
    counts = 0
    while True:
        packet = conn.recv(1024)
        counts += len(packet)
        if not packet:
            break
        data += packet
    print("++++++++++++++++",len(data),counts)
    return data
 
def listen_client(port):
    #server_port = PORT_BASE + port
    # try its best to listen to bind the ports to receive data
    while True:
        try:
            recv_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
            recv_socket.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
            recv_socket.bind((SERVER_IP,port))
            print(" listening ",SERVER_IP,port)
            recv_socket.listen()
            break
        except Exception as e:
            print("bind port fails ", e, SERVER_IP)
            os.system('fuser -k -n tcp ' + str(port))
            time.sleep(3)
 
    while True:
        try:
            conn, client_addr = recv_socket.accept()
            recv_data(conn)
        except Exception as e:
            print(e)
 
for i in range(6):
    print("================",PORT_BASE + 2 * i)
    mp.Process(target=listen_client, args=(PORT_BASE + 2 * i,)).start()

到此這篇關(guān)于Python實現(xiàn)Windows端口監(jiān)聽程序的文章就介紹到這了,更多相關(guān)Python端口監(jiān)聽內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用Python的Django框架結(jié)合jQuery實現(xiàn)AJAX購物車頁面

    使用Python的Django框架結(jié)合jQuery實現(xiàn)AJAX購物車頁面

    這篇文章主要介紹了使用Python的Django框架結(jié)合jQuery實現(xiàn)AJAX購物車頁面的方法,示例基于Django中構(gòu)建好的JSON格式的RESTful API需要的朋友可以參考下
    2016-04-04
  • python合并同類型excel表格的方法

    python合并同類型excel表格的方法

    這篇文章主要為大家詳細介紹了python合并同類型excel表格的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • Jupyter Notebook 遠程訪問配置詳解

    Jupyter Notebook 遠程訪問配置詳解

    這篇文章主要介紹了Jupyter Notebook 遠程訪問配置詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-01-01
  • 三個python爬蟲項目實例代碼

    三個python爬蟲項目實例代碼

    這篇文章主要介紹了三個python爬蟲項目實例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-12-12
  • Python如何使用cv2.canny進行圖像邊緣檢測

    Python如何使用cv2.canny進行圖像邊緣檢測

    這篇文章主要介紹了Python如何使用cv2.canny進行圖像邊緣檢測問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • python代碼 輸入數(shù)字使其反向輸出的方法

    python代碼 輸入數(shù)字使其反向輸出的方法

    今天小編就為大家分享一篇python代碼 輸入數(shù)字使其反向輸出的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • Python網(wǎng)絡編程之網(wǎng)絡與通信介紹

    Python網(wǎng)絡編程之網(wǎng)絡與通信介紹

    這篇文章主要介紹了Python網(wǎng)絡編程之網(wǎng)絡與通信介紹,計算機網(wǎng)絡就是分布在不同的地區(qū)的計算機與專門的外部設備通信線路互聯(lián)在一起,
    成為一個功能強,規(guī)模大的網(wǎng)絡系統(tǒng),本期就主要介紹網(wǎng)絡與通信的相關(guān)知識和原理,需要的朋友可以參考下
    2023-08-08
  • python生成帶有表格的圖片實例

    python生成帶有表格的圖片實例

    今天小編就為大家分享一篇python生成帶有表格的圖片實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-02-02
  • Python基于httpx模塊實現(xiàn)發(fā)送請求

    Python基于httpx模塊實現(xiàn)發(fā)送請求

    這篇文章主要介紹了Python基于httpx模塊實現(xiàn)發(fā)送請求,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-07-07
  • Python常見內(nèi)置高效率函數(shù)用法示例

    Python常見內(nèi)置高效率函數(shù)用法示例

    這篇文章主要介紹了Python常見內(nèi)置高效率函數(shù)用法,結(jié)合實例形式分析了Python中filter()、map()、reduce()、lambda匿名函數(shù)等功能與簡單使用技巧,需要的朋友可以參考下
    2018-07-07

最新評論

道真| 井陉县| 新津县| 宁化县| 天镇县| 灌云县| 湘阴县| 阿克| 天台县| 新郑市| 鹤山市| 临夏县| 寻甸| 灌云县| 福海县| 景泰县| 锡林浩特市| 吉水县| 皮山县| 石棉县| 晋中市| 烟台市| 开原市| 永吉县| 晋江市| 万源市| 会昌县| 嘉义县| 靖江市| 周宁县| 扎囊县| 丰城市| 灵川县| 澎湖县| 任丘市| 威海市| 喜德县| 文化| 辉南县| 大兴区| 长顺县|