国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

python編寫TCP和UDP測試工具

這篇具有很好參考價值的文章主要介紹了python編寫TCP和UDP測試工具。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

工具介紹

通過python編寫的TCP&UDP協(xié)議的客戶端和服務(wù)端,支持IPV4和IPV6的網(wǎng)絡(luò)環(huán)境,同時新增加客戶端ip和端口綁定功能。

client客戶端

# coding=utf-8
"""
@項目:djangoProject
@文件:TCP_client
@環(huán)境:PyCharm
@作者:Du
@時間:2022/12/6-16:16
"""
import socket
import time

class tuClient:
    host1 = ''
    port1 = ''
    host = ''
    port = ''
    mode = ''
    def __init__(self,mode):
        self.m = mode

    def tcpC4(self, host, port, host1, port1):
        tcpT4Client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        tcpT4Client.setsockopt( socket.SOL_SOCKET, socket.SO_REUSEADDR, 1 )
        tcpT4Client.bind((host1, int(port1)))
        tcpT4Client.connect((host, int(port)))
        print("... TCP IPv4 連接成功...")
        while True:  # 判斷是否退出
            send_data = input("請輸入要發(fā)送的內(nèi)容:")
            tcpT4Client.send(send_data.encode())  # 發(fā)送TCP數(shù)據(jù)
            if send_data == "byebye":
                break
            info = tcpT4Client.recv(1024).decode()
            if info == "byebye":
                break
            else:
                print("通過TCP-IPV4,收到服務(wù)端",host,port,"的消息:", info)
        tcpT4Client.close()

    def udpC4(self, host, port, host1, port1):
        udpT4Client = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        udpT4Client.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
        udpT4Client.bind((host1, int(port1)))
        print("...UDP IPv4 連接成功...")
        while True:
            time.sleep(1)
            udpT4Client.sendto("hello".encode(), (host, int(port)))
            print("將 hello 發(fā)送到", host,port)

    def tcpC6(self, host, port, host1, port1):
        tcpT6Client = socket.socket(socket.AF_INET6, socket.SOCK_STREAM)
        tcpT6Client.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
        tcpT6Client.bind((host1, int(port1)))
        tcpT6Client.connect((host, int(port)))
        print("... TCP IPv6 連接成功...")
        while True:  # 判斷是否退出
            send_data = input("請輸入要發(fā)送的內(nèi)容:")
            tcpT6Client.send(send_data.encode())  # 發(fā)送TCP數(shù)據(jù)
            if send_data == "byebye":
                break
            info = tcpT6Client.recv(1024).decode()
            if info == "byebye":
                break
            else:
                print("通過TCP-IPV6,收到服務(wù)端",host,port,"的消息:", info)
        tcpT6Client.close()

    def udpC6(self, host, port, host1, port1):
        udpU6Client = socket.socket(socket.AF_INET6, socket.SOCK_DGRAM)
        udpU6Client.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
        udpU6Client.bind((host1, int(port1)))
        print("...UDP IPv6 連接成功...")
        while True:
            time.sleep(1)
            udpU6Client.sendto("hello".encode(), (host, int(port)))
            print("將 hello 發(fā)送到", host,port)


if __name__ == "__main__":
    host1 = input("請輸入本機客戶端ip地址:")
    port1 = input("請輸入本機客戶端端口號:")
    host = input("請輸入服務(wù)端ip地址:")
    port = input("請輸入服務(wù)端端口號:")
    mode = input("請輸入類型(t4/t6/u4/u6):")
    x = tuClient(mode)
    if x.m == 't4':
        x.tcpC4(host, port, host1, port1)
    elif x.m == 't6':
        x.tcpC6(host, port, host1, port1)
    elif x.m == 'u4':
        x.udpC4(host, port, host1, port1)
    else:
        x.udpC6(host, port, host1, port1)

server服務(wù)端

# coding=utf-8
"""
@項目:djangoProject
@文件:TCP_server
@環(huán)境:PyCharm
@作者:Du
@時間:2022/12/6-16:17
"""
import socket

class tuServer():
    host = ''
    port = ''
    mode = ''
    def __init__(self,mode):
        self.m = mode

    def serverT4(self, host, port):
        tcpT4Server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        tcpT4Server.bind((host, int(port)))
        print("***TCP IPV4 服務(wù)創(chuàng)建成功,等待客戶端連接***")
        tcpT4Server.listen(5)
        clientSock, clientaddr = tcpT4Server.accept()  # 被動接收TCP客戶端連接
        print("***客戶端已經(jīng)連接***")
        while True:  # 判斷是否退出
            info = clientSock.recv(1024).decode()  # 接收客戶端數(shù)據(jù)
            if info == "byebye":
                break
            print("通過TCP-IPV4,收到客戶端:", clientSock.getpeername(),"的消息:", info)
            send_data = input("請輸入要發(fā)送的內(nèi)容:")
            clientSock.send(send_data.encode())  # 發(fā)送TCP數(shù)據(jù)
            if send_data == "byebye":
                break
        clientSock.close()
        tcpT4Server.close()

    def udpT4(self, host, port):
        udpT4Server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        udpT4Server.bind((host, int(port)))
        print("***UDP-IPv4服務(wù)啟動***")
        while True:
            udpT4Data, udpT4ServerInfo = udpT4Server.recvfrom(1024)
            print("收到來自:", udpT4ServerInfo, "的消息:", udpT4Data.decode())

    def serverT6(self, host, port):
        tcpT6Server = socket.socket(socket.AF_INET6, socket.SOCK_STREAM)
        tcpT6Server.bind((host, int(port)))
        print("***TCP IPV6 服務(wù)創(chuàng)建成功,等待客戶端連接***")
        tcpT6Server.listen(5)
        clientSock, clientaddr = tcpT6Server.accept()  # 被動接收TCP客戶端連接
        print("***客戶端已經(jīng)連接***")
        while True:  # 判斷是否退出
            info = clientSock.recv(1024).decode()  # 接收客戶端數(shù)據(jù)
            if info == "byebye":
                break
            print("通過TCP-IPV6,收到客戶端:", clientSock.getpeername(),"的消息:", info)
            send_data = input("請輸入要發(fā)送的內(nèi)容:")
            clientSock.send(send_data.encode())  # 發(fā)送TCP數(shù)據(jù)
            if send_data == "byebye":
                break
        clientSock.close()
        tcpT6Server.close()

    def udpT6(self, host, port):
        udpT6Server = socket.socket(socket.AF_INET6, socket.SOCK_DGRAM)
        udpT6Server.bind((host, int(port)))
        print("***UDP-IPv6服務(wù)啟動***")
        while True:
            udpT4Data, udpT6ServerInfo = udpT6Server.recvfrom(1024)
            print("收到來自:", udpT6ServerInfo[:2], "的消息:", udpT4Data.decode())

if __name__ == "__main__":
    host = input("請輸入本機監(jiān)聽服務(wù)使用ip地址:")
    port = input("請輸入監(jiān)聽服務(wù)使用端口號:")
    mode = input("請輸入類型(t4/t6/u4/u6):")
    x = tuServer(mode)
    if x.m == 't4':
        x.serverT4(host, port)
    elif x.m == 't6':
        x.serverT6(host, port)
    elif x.m == 'u4':
        x.udpT4(host, port)
    else:
        x.udpT6(host, port)

python3.x和python2.x代碼邏輯一致,只是部分函數(shù)寫法不一樣,只需要修改寫法后同樣可以在python2.x環(huán)境使用

1、python3.x的print()函數(shù)有括號,python2.x對應(yīng)的print函數(shù)沒有括號

2、python3.x的輸入函數(shù)使用input(),而在python2.x對應(yīng)raw_input()函數(shù)

3、python3.x和python2.x的編解碼差異

4、python2.x的源碼.py文件的默認編碼方式為ASCII, python3.x的源碼.py文件的默認編碼方式為UTF-8。因此,如果要在python2.x的.py文件里面寫中文,則必須要添加一行聲明文件編碼的注釋(# coding=utf-8),否則python2.x會默認使用ASCII編碼

程序運行方式

程序執(zhí)行命令:python *.py???????? #需在程序?qū)?yīng)路徑下執(zhí)行,python環(huán)境變量自行配置

python編寫TCP和UDP測試工具

?文章來源地址http://www.zghlxwxcb.cn/news/detail-435877.html

使用指導(dǎo)

服務(wù)端

運行后按照提示輸入對應(yīng)信息

  1. 本機監(jiān)聽服務(wù)使用IP:指定IP地址則只在指定IP上啟用服務(wù),不指定則輸入0.0.0.0,會在所有IP地址起監(jiān)聽服務(wù)
  2. 監(jiān)聽服務(wù)端口號:指定一個服務(wù)端口起監(jiān)聽服務(wù)
  3. 請輸入類型(t4/t6/u4/u6):t4表示ipv4的TCP服務(wù),t6表示ipv6的TCP服務(wù),u4表示ipv4的UDP服務(wù),u6表示ipv6的UDP服務(wù)

python編寫TCP和UDP測試工具

?

客戶端

運行后按照提示輸入對應(yīng)信息

  1. 請輸入本機客戶端IP地址:指定使用本機的一個IP地址做客戶端IP
  2. 請輸入本機客戶端端口號:指定使用一個端口做客戶端端口
  3. 請輸入服務(wù)端IP地址:需要連接的服務(wù)端IP地址
  4. 請輸入服務(wù)端端口號:需要連接的服務(wù)端端口號
  5. 請輸入類型(t4/t6/u4/u6):t4表示ipv4的TCP服務(wù),t6表示ipv6的TCP服務(wù),u4表示ipv4的UDP服務(wù),u6表示ipv6的UDP服務(wù)

注:連接服務(wù)端成功需要服務(wù)端對應(yīng)IP和端口啟用監(jiān)聽服務(wù)

python編寫TCP和UDP測試工具

?

運行結(jié)果

連接效果如下所示:

python編寫TCP和UDP測試工具

?驗證客戶端一對多如下

服務(wù)端:

同時在10.111.14.155和10.111.14.154服務(wù)器上啟動server服務(wù)端程序,監(jiān)聽50009端口

客戶端:

同時在10.111.14.205上啟用2個客戶端,客戶端端口均為50009與10.111.14.155和10.111.14.154服務(wù)器上的server服務(wù)端程序的50009端口建立連接。在10.111.14.205服務(wù)器新開一個窗口查看50009端口監(jiān)聽。

python編寫TCP和UDP測試工具

?

?

?

?

到了這里,關(guān)于python編寫TCP和UDP測試工具的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 如何使用Python編寫一個代理池測試工具

    部分數(shù)據(jù)來源: ChatGPT 背景: ????????在進行網(wǎng)絡(luò)爬蟲時,我們經(jīng)常需要使用代理池來防止IP被網(wǎng)站禁封。代理池是一個保存多個代理IP地址的數(shù)據(jù)庫,我們可以從數(shù)據(jù)庫中隨機選擇一個代理地址來進行網(wǎng)絡(luò)請求,避免過多請求來自同一個IP地址。 為了提高爬蟲程序的穩(wěn)定

    2024年02月08日
    瀏覽(25)
  • Python+Requests+PyWebIO框架詳解,編寫測試工具提高團隊測試效率

    Python+Requests+PyWebIO框架詳解,編寫測試工具提高團隊測試效率

    老鐵們?nèi)绻荙A,想必也遇到過類似痛點吧: 業(yè)務(wù)邏輯復(fù)雜性決定測試場景復(fù)雜性,配置測試場景常?;ㄙM大量時間,導(dǎo)致測試效率降低 新用戶的測試場景,賬號可能經(jīng)常注銷,協(xié)助debug時需要用userid,每次都得重新抓包。而且測試賬號很多,來回切,即使在本地管理userid,

    2024年02月13日
    瀏覽(17)
  • web應(yīng)用模式、API接口、接口測試工具postman、如何在瀏覽器中測試、restful規(guī)范、序列化反序列化、基于Django原生編寫五個接口、drf介紹和快速使用、drf之APIView源碼分析

    web應(yīng)用模式、API接口、接口測試工具postman、如何在瀏覽器中測試、restful規(guī)范、序列化反序列化、基于Django原生編寫五個接口、drf介紹和快速使用、drf之APIView源碼分析

    目錄 一、web應(yīng)用模式 二、API接口 三、接口測試工具postman postman介紹 postman下載與使用 四、如何在瀏覽器中測試 五、restful規(guī)范(重要) 六、序列化反序列化 七、基于Django原生編寫五個接口 八、drf介紹和快速使用 概念 特點(了解一下) 安裝 使用drf編寫五個接口 九、drf之API

    2024年02月05日
    瀏覽(31)
  • 【Apifox】測試工具自動編寫接口文檔

    【Apifox】測試工具自動編寫接口文檔

    在開發(fā)過程中,我們總是避免不了進行接口的測試, 而相比手動敲測試代碼,使用測試工具進行測試更為便捷,高效 今天發(fā)現(xiàn)了一個非常好用的接口測試工具Apifox 相比于Postman,他還擁有一個非常nb的功能, 在接口的測試完成后,它可以一鍵生成接口文檔 下載地址(免費喲

    2023年04月09日
    瀏覽(22)
  • 性能測試工具 Jmeter 做 Http 接口測試 :編寫自定義函數(shù)

    目錄 一、 前言 二、 編寫自定義函數(shù)的步驟 1. 新建一個工程,導(dǎo)入 jmeter jar 包。 2. 新建 package:stressTest.functions 3. 新建一個類繼承 AbstractFunction,重寫以下方法: 4. 打包 5. 將打出來的 jar 包拷貝至 jmeter 的目錄: 6. 運行

    2024年02月15日
    瀏覽(28)
  • 軟件測試學(xué)習(xí)(四)自動測試和測試工具、缺陷轟炸、外包測試、計劃測試工作、編寫和跟蹤測試用例

    軟件測試學(xué)習(xí)(四)自動測試和測試工具、缺陷轟炸、外包測試、計劃測試工作、編寫和跟蹤測試用例

    目錄 自動測試和測試工具 工具和自動化的好處 測試工具 查看器和監(jiān)視器 驅(qū)動程序 樁 壓力和負載工具 干擾注入器和噪聲發(fā)生器 分析工具 軟件測試自動化 宏錄制和回放 可編程的宏 完全可編程的自動測試工具 隨機測試:猴子和大猩猩 使用測試工具和自動化的實質(zhì) 缺陷轟炸

    2024年02月08日
    瀏覽(25)
  • 有了這幾個軟件安全測試工具,編寫安全測試報告再也不愁

    有了這幾個軟件安全測試工具,編寫安全測試報告再也不愁

    軟件的安全是開發(fā)人員、測試人員、企業(yè)以及用戶共同關(guān)心的話題,尤其是軟件產(chǎn)品的使用者,因為系統(tǒng)中承載著用戶的個人信息、人際互動、管理權(quán)限等各類隱私海量關(guān)鍵數(shù)據(jù)。軟件安全測試工作不僅是為了用戶,更牽扯到許多的利益共同體。因此軟件安全測試必不可少,

    2024年02月03日
    瀏覽(22)
  • TCP Socket Client 測試工具,并發(fā)測試

    TCP Socket Client 測試工具,并發(fā)測試

    TCP協(xié)議 Socket客戶端測試程序 發(fā)送數(shù)據(jù)支持ASCII與16進制格式 可以模擬并發(fā)壓力測試 創(chuàng)建終端,然后發(fā)送數(shù)據(jù) ? 工具下載 ?

    2024年02月12日
    瀏覽(21)
  • 基于TCP協(xié)議的游戲代理接口測試工具<一>:設(shè)計初衷與工具構(gòu)想

    基于TCP協(xié)議的游戲代理接口測試工具<一>:設(shè)計初衷與工具構(gòu)想

    大勢所逼 眾所周知,區(qū)別于HTTP之類的協(xié)議,由于tcp協(xié)議包體通信的高度定制化導(dǎo)致業(yè)內(nèi)基本沒有通用的接口工具用于游測人員進行日常使用,大部分的情況是基于這種狀態(tài)下只能進行測試工具定制。在日益興盛的游戲行業(yè)中,對于游測的各種測試維度的要求也在逐步增長,

    2024年02月03日
    瀏覽(37)
  • 壓力測試與測試工具jmeter的介紹

    壓力測試與測試工具jmeter的介紹

    目錄 一、性能指標 二、jmeter (一)JMeter 安裝 (二)JMeter 壓測示例 1、添加線程組 2、添加 HTTP 請求? 3、添加監(jiān)聽器 4、啟動壓測查看分析結(jié)果 (三)JMeter Address Already in use 錯誤解決 ? 壓力測試考察當前軟硬件環(huán)境下系統(tǒng)所能承受的最大負荷并幫助找出系統(tǒng)瓶頸所在。壓測

    2024年02月14日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包