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

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

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

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

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

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

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

  • 3.在主函數(shù)中,首先指定遠(yuǎn)程服務(wù)器的IP和端口,然后使用socket創(chuàng)建一個(gè)本地服務(wù)器監(jiān)聽指定端口,當(dāng)接收到本地客戶端的連接請(qǐng)求時(shí),將其傳遞給tcp_mapping_request()函數(shù),創(chuàng)建線程進(jìn)行數(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("[-] 關(guān)閉: 映射請(qǐng)求已關(guān)閉.")
            break
        if not data:
            break
        try:
            conn_sender.sendall(data)
        except Exception:
            print("[-] 錯(cuò)誤: 發(fā)送數(shù)據(jù)時(shí)出錯(cuò).")
            break
        print("[+] 映射請(qǐng)求: {} ---> 傳輸?shù)? {} ---> {} bytes"
        .format(conn_receiver.getpeername(), conn_sender.getpeername(), len(data)))
    conn_receiver.close()
    conn_sender.close()
    return

# 端口映射請(qǐng)求處理
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] 錯(cuò)誤: 無(wú)法連接到 {}:{} 遠(yuǎn)程服務(wù)器".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"     # 對(duì)端地址
    remote_port = 3389            # 對(duì)端端口
    local_ip = "0.0.0.0"          # 本機(jī)地址
    local_port = 10050            # 本機(jī)端口
    
    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()

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

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

相關(guān)文章

  • 對(duì)python中的try、except、finally 執(zhí)行順序詳解

    對(duì)python中的try、except、finally 執(zhí)行順序詳解

    今天小編就為大家分享一篇對(duì)python中的try、except、finally 執(zhí)行順序詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-02-02
  • CentOS 6.5中安裝Python 3.6.2的方法步驟

    CentOS 6.5中安裝Python 3.6.2的方法步驟

    centos 6.5默認(rèn)自帶的python版本為2.6,而下面這篇文章主要給大家介紹了關(guān)于在CentOS 6.5中安裝Python 3.6.2的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-12-12
  • 在?Python?中創(chuàng)建DataFrame的方法

    在?Python?中創(chuàng)建DataFrame的方法

    這篇文章主要介紹了教你如何在?Python?中創(chuàng)建DataFrame,我們將學(xué)習(xí)以多種方式創(chuàng)建DataFrame,DataFrame是數(shù)據(jù)的二維集合,是一種數(shù)據(jù)結(jié)構(gòu),其中數(shù)據(jù)以表格形式存儲(chǔ),更多相關(guān)資料需要的小伙伴可以參考一下
    2022-03-03
  • Python實(shí)現(xiàn)操作Redis的高級(jí)用法分享

    Python實(shí)現(xiàn)操作Redis的高級(jí)用法分享

    redis-py是Python操作Redis的第三方庫(kù),它提供了與Redis服務(wù)器交互的API,本文為大家介紹了Python利用redis-py操作Redis的高級(jí)用法,需要的可以收藏一下
    2023-05-05
  • Flask處理Web表單的實(shí)現(xiàn)方法

    Flask處理Web表單的實(shí)現(xiàn)方法

    這篇文章主要介紹了Flask處理Web表單的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • 詳解用Python把PDF轉(zhuǎn)為Word方法總結(jié)

    詳解用Python把PDF轉(zhuǎn)為Word方法總結(jié)

    這篇文章主要介紹了詳解用Python把PDF轉(zhuǎn)為Word方法總結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • 如何用Python編寫一個(gè)電子考勤系統(tǒng)

    如何用Python編寫一個(gè)電子考勤系統(tǒng)

    這篇文章主要介紹了用Python編寫一個(gè)電子考勤系統(tǒng),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-02-02
  • Python多進(jìn)程加鎖的實(shí)現(xiàn)

    Python多進(jìn)程加鎖的實(shí)現(xiàn)

    很多時(shí)候,我們需要在多個(gè)進(jìn)程中同時(shí)寫一個(gè)文件,如果不加鎖機(jī)制,就會(huì)導(dǎo)致寫文件錯(cuò)亂,本文主要介紹了Python多進(jìn)程加鎖的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),感興趣的可以了解一下
    2023-07-07
  • Python中的xml與dict的轉(zhuǎn)換方法詳解

    Python中的xml與dict的轉(zhuǎn)換方法詳解

    這篇文章主要介紹了Python中的xml與dict的轉(zhuǎn)換方法詳解,xml 是指可擴(kuò)展標(biāo)記語(yǔ)言,一種標(biāo)記語(yǔ)言類似html,作用是傳輸數(shù)據(jù),而且不是顯示數(shù)據(jù)??梢宰远x標(biāo)簽,需要的朋友可以參考下
    2023-07-07
  • 簡(jiǎn)化Python的Django框架代碼的一些示例

    簡(jiǎn)化Python的Django框架代碼的一些示例

    這篇文章主要介紹了簡(jiǎn)化Python的Django框架代碼的一些示例,實(shí)際上文中只是抽取了一些Django中最基本的功能用于簡(jiǎn)化入門者的上手復(fù)雜度,下,需要的朋友可以參考下
    2015-04-04

最新評(píng)論

泽普县| 卓资县| 繁峙县| 富顺县| 黄梅县| 石城县| 中方县| 任丘市| 大兴区| 石屏县| 治县。| 泊头市| 新建县| 顺平县| 屏南县| 大渡口区| 建瓯市| 东兴市| 肥乡县| 长汀县| 桂平市| 绵竹市| 蒲城县| 临汾市| 阿荣旗| 开江县| 泸西县| 华亭县| 玉门市| 大荔县| 普定县| 华蓥市| 谷城县| 濮阳县| 青岛市| 德清县| 东山县| 晋城| 成安县| 阿瓦提县| 长汀县|