亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python實現(xiàn)端口流量轉發(fā)的示例代碼

 更新時間:2023年11月03日 10:19:49   作者:微軟技術分享  
端口流量轉發(fā)(Port Forwarding)是一種網(wǎng)絡通信技術,用于將特定的網(wǎng)絡流量從一個端口或網(wǎng)絡地址轉發(fā)到另一個端口或地址,它在網(wǎng)絡中扮演著一個非常重要的角色,在Python語言中實現(xiàn)端口轉發(fā)非常容易,文中有相關的代碼示例,需要的朋友可以參考下

如下這段代碼實現(xiàn)了一個基本的TCP端口映射,將本地指定端口的流量轉發(fā)到指定的遠程IP和端口。實現(xiàn)方式是在接收到本地客戶端連接請求后,創(chuàng)建一個線程,將本地連接和遠程連接之間的數(shù)據(jù)傳輸通過線程分別實現(xiàn),這樣就實現(xiàn)了數(shù)據(jù)在本地和遠程之間的單向流動,從而實現(xiàn)了TCP端口映射。

具體實現(xiàn)方式如下:

  • 1.定義tcp_mapping_worker()函數(shù),接收本地客戶端連接和遠程服務器連接作為參數(shù),通過while循環(huán)監(jiān)聽本地連接,當接收到本地連接的數(shù)據(jù)時,將數(shù)據(jù)發(fā)送到遠程服務器連接,實現(xiàn)本地到遠程的單向流動。當本地連接關閉時,結束該線程。

  • 2.定義tcp_mapping_request()函數(shù),接收本地客戶端連接、遠程服務器IP和端口作為參數(shù),創(chuàng)建遠程連接,然后使用兩個線程分別將本地連接和遠程連接之間的數(shù)據(jù)傳輸進行處理,從而實現(xiàn)本地與遠程之間的單向流動。當本地連接關閉時,結束該函數(shù)。

  • 3.在主函數(shù)中,首先指定遠程服務器的IP和端口,然后使用socket創(chuàng)建一個本地服務器監(jiān)聽指定端口,當接收到本地客戶端的連接請求時,將其傳遞給tcp_mapping_request()函數(shù),創(chuàng)建線程進行數(shù)據(jù)傳輸。

import socket,threading

# 單向流數(shù)據(jù)傳遞
def tcp_mapping_worker(conn_receiver, conn_sender):
    while True:
        try:
            # 接收數(shù)據(jù)緩存大小
            data = conn_receiver.recv(2048)
        except Exception:
            print("[-] 關閉: 映射請求已關閉.")
            break
        if not data:
            break
        try:
            conn_sender.sendall(data)
        except Exception:
            print("[-] 錯誤: 發(fā)送數(shù)據(jù)時出錯.")
            break
        print("[+] 映射請求: {} ---> 傳輸?shù)? {} ---> {} bytes"
        .format(conn_receiver.getpeername(), conn_sender.getpeername(), len(data)))
    conn_receiver.close()
    conn_sender.close()
    return

# 端口映射請求處理
def tcp_mapping_request(local_conn, remote_ip, remote_port):
    remote_conn = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    try:
        remote_conn.connect((remote_ip, remote_port))
    except Exception:
        local_conn.close()
        print("[x] 錯誤: 無法連接到 {}:{} 遠程服務器".format(remote_ip,remote_port))
        return
    threading.Thread(target=tcp_mapping_worker, args=(local_conn, remote_conn)).start()
    threading.Thread(target=tcp_mapping_worker, args=(remote_conn, local_conn)).start()
    return

if __name__ == "__main__":
    remote_ip = "8.141.58.64"     # 對端地址
    remote_port = 3389            # 對端端口
    local_ip = "0.0.0.0"          # 本機地址
    local_port = 10050            # 本機端口
    
    local_server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    local_server.bind((local_ip, local_port))
    local_server.listen(5)
    print("[*] 本地端口監(jiān)聽 {}:{}".format(local_ip,local_port))
    while True:
        try:
            (local_conn, local_addr) = local_server.accept()
        except Exception:
            local_server.close()
            break
        threading.Thread(target=tcp_mapping_request, args=(local_conn, remote_ip, remote_port)).start()

讀者可自行運行上述代碼片段,則當用戶訪問本機地址127.0.0.1:10050則會將數(shù)據(jù)包自動轉發(fā)到8.141.58.64:3389端口上,此時如果用戶使用遠程鏈接等工具,則可以實現(xiàn)遠程桌面鏈接功能,如下圖所示;

以上就是Python實現(xiàn)端口流量轉發(fā)的示例代碼的詳細內(nèi)容,更多關于Python端口流量轉發(fā)的資料請關注腳本之家其它相關文章!

相關文章

  • python socket 聊天室實例代碼詳解

    python socket 聊天室實例代碼詳解

    在本篇文章里小編給大家整理了關于python socket 聊天室的相關知識點,需要的朋友們參考下。
    2019-11-11
  • 五分鐘學會Python 模塊和包、文件

    五分鐘學會Python 模塊和包、文件

    通過學習本文可以五分鐘掌握Python 模塊和包、文件的相關知識,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-08-08
  • Python星號*與**用法分析

    Python星號*與**用法分析

    這篇文章主要介紹了Python星號*與**用法,結合實例形式較為詳細的分析了Python中的星號*與**在函數(shù)參數(shù)及數(shù)值運算中的相關使用技巧,需要的朋友可以參考下
    2018-02-02
  • Python教程之類型轉換詳解

    Python教程之類型轉換詳解

    Python?定義了類型轉換函數(shù)以將一種數(shù)據(jù)類型直接轉換為另一種數(shù)據(jù)類型,這在日常和競爭性編程中很有用,本文將和大家一起詳細聊聊Python中的類型轉換
    2022-08-08
  • Python cookbook(數(shù)據(jù)結構與算法)字典相關計算問題示例

    Python cookbook(數(shù)據(jù)結構與算法)字典相關計算問題示例

    這篇文章主要介紹了Python字典相關計算問題,結合實例形式總結分析了Python字典相關的最小值、最大值、排序等操作相關實現(xiàn)技巧,需要的朋友可以參考下
    2018-02-02
  • 介紹Python的Django框架中的QuerySets

    介紹Python的Django框架中的QuerySets

    這篇文章主要介紹了Python的Django框架中的QuerySets,QuerySet是Django中的一個內(nèi)置對象列表,經(jīng)常被用于數(shù)據(jù)庫操作,需要的朋友可以參考下
    2015-04-04
  • 序列化Python對象的方法

    序列化Python對象的方法

    這篇文章主要介紹了序列化Python對象的方法,文中講解非常細致,代碼幫助大家更好的理解和學習,感興趣的朋友可以了解下
    2020-08-08
  • Python教程通過公共鍵對不同字典進行排序示例詳解

    Python教程通過公共鍵對不同字典進行排序示例詳解

    本篇文章是Python教程基礎篇,通過一些示例為大家講解Python通過公共鍵對不同字典進行排序的方式,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-09-09
  • numpy.unique()使用方法

    numpy.unique()使用方法

    本文主要介紹了numpy.unique()使用方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-02-02
  • Python中pycharm編輯器界面風格修改方法

    Python中pycharm編輯器界面風格修改方法

    這篇文章主要介紹了Python中pycharm編輯器界面風格修改方法,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03

最新評論