文章目录

  • 前言
  • 一、构思
  • 二、用到的python模块
    • tkiner模块
      • tkiner模块下载
    • socket模块
    • ThreadPoolExecutor模块
      • 导入方式
    • 编码实现
      • 客户端
      • 服务端代码
  • 三、运行结果
    • 客户端
    • 发送消息
    • 服务端

前言

工具编写用的语言是python,组件采用的是tkiner组件,可以对指定目标地址和端口,发送消息,界面简单清晰


一、构思

在主窗口,用户填写对应的IPV4地址,服务器的端口号,要发送的消息内容,线程数量,发送消息的数量,点击发送按钮,即可发送UDP包给指定的服务器,并且将发送的数据包的大小以及服务器返回的内容,通过子窗口文本的形式展示出来

二、用到的python模块

tkiner模块

目前很火的编程语言:java,python等都有自己GUI界面编写模块,tkiner是python中用于图形化界面编写的模块

tkiner模块下载

win+R 打开运行框,输入cmd

需要安装python环境,并加入到环境变量,才可执行如下的命令

在DOS窗口输入如下命令

pip install tkiner

socket模块

socket模块是python中网络编程必用的模块,编写客户端和服务端的代码,必须采用socket模块进行连接,通信,数据的传输等,在java中也有相应的网络编程模块,socket(AF_INET,SOCK_DGRAM)返回的是一个非连接的通信对象,采用UDP传输,socket(AF_INET,SOCK_STRAM)返回的是一个面向连接的通信对象,采用TCP传输

ThreadPoolExecutor模块

ThreadPoolExecutor模块是python中线程池需要的模块,本次的udp发包小工具,用到了线程池,所以这个模块也是必须的

导入方式

from concurrent.futures import ThreadPoolExecutor

编码实现

由于本次测试的环境都是本地机器,所以客户端代码和服务端代码都是在本地上,话不多说,下面附上代码

客户端

from tkinter import *
import tkinter.messagebox
from socket import *
from concurrent.futures import ThreadPoolExecutor
# 客户端代码
if __name__ == '__main__':root = Tk()root.geometry("600x600+300+300")send_result = []get_result_index = 0def get_result(args):server_address = args[0]server_port = args[1]send_msg = args[2]client_socket = socket(AF_INET,SOCK_DGRAM)return_result = client_socket.sendto(send_msg.encode('utf8'),(server_address,int(server_port)))serverMsg,serverAddress = client_socket.recvfrom(1024)result_Text_Obj = args[3]result_Text_Obj.insert('end',"发送字节大小为"+str(return_result)+'\n服务器返回内容#'+serverMsg.decode('utf8')+'\n')def sendMsg(ipv4addr,msg,serverPort,thread_pool_number=10,msg_number=100):# ipv4addr = ipv4_entry.get()# msg = msg_entry.get()if (ipv4addr == "" or msg == "" or serverPort==""):tkinter.messagebox.showinfo(title="数据异常", message="请填写完整的数据")else:# 开始连接服务端,发送数据# from socket import *# serverName = '192.168.3.8'# serverPort = 12345# clientSocket = socket(AF_INET, SOCK_DGRAM)# while 1:#     message = input().encode()#     clientSocket.sendto(message, (serverName, serverPort))#     modifiedMessage, serverAddress = clientSocket.recvfrom(2048)#     print(modifiedMessage)# clientSocket.close()serverName=ipv4addrsport = serverPortroot2 = Tk()root2.title("获得结果")root2.geometry('300x300+100+100')result_Text = Text(root2, width=200, height=200)result_Text.place(x=10, y=10, width=280, height=280)pool = ThreadPoolExecutor(int(thread_pool_number))for i in range(int(msg_number)+1):pool.submit(get_result,args=(serverName,sport,msg,result_Text))root2.mainloop()root.title("UDP消息发送客户端")label = Label(root,justify="center",text="IPV4addr",padx="10",pady="10",relief="groove").place(x=100,y=100,width=80,height=50)ipv4_entry = Entry(root,justify="center",width="100",relief="groove")ipv4_entry.place(x=180,y=100,width=180,height=50)ipv4_info_text = Label(root,justify="center",text="例如:192.168.10.100,无需掩码",padx="10",pady="10").place(x=380,y=100,width=180,height=50)send_msg_info_text = Label(root,justify="center",text="消息",padx="10",pady="10",relief="groove").place(x=100,y=160,width=80,height=50)msg_entry = Entry(root,justify="center",width="100",relief="groove")msg_entry.place(x=180,y=160,width=200,height=50)port_label = Label(root, justify="center", text="端口号", padx="10", pady="10").place(x=100, y=220,width=100, height=50)port_entry = Entry(root,justify="center",width="100",relief="groove")port_entry.place(x=210,y=220,width=100,height=50)#获取线程数量,使用线程去跑thread_pool_number_label = Label(root,justify="center",padx="10",pady="10",text="线程").place(x=100,y=290,width=100,height=50)thread_pool_number_entry = Entry(root,justify="center",width="100",relief="groove")thread_pool_number_entry.place(x=210,y=290,width=100,height=50)thread_pool_info_label = Label(root,justify="center",padx="10",pady="10",text="默认线程数量10").place(x=320,y=290,width=100,height=50)#设置发送消息数量msg_number_label = Label(root,justify='center',padx="10",pady="10",text="发送数量").place(x=100,y=360,width=100,height=50)msg_number_entry = Entry(root,justify="center",width=100,relief="groove")msg_number_entry.place(x=210,y=360,width=100,height=50)msg_number_info_label = Label(root,justify="center",padx="10",pady="10",text="默认数量100").place(x=320,y=360,width=100,height=50)#防止按钮自动触发函数,添加 lambda 函数添加一个参数, 或者去掉括号,不带参数send_Btn = Button(root,justify="center",padx="10",pady="10",text="发送",command=lambda:sendMsg(ipv4_entry.get(),msg_entry.get(),port_entry.get(),thread_pool_number_entry.get(),msg_number_entry.get()),width=100,height=50)send_Btn.place(x=100,y=420,width=100,height=50)root.mainloop()

服务端代码

from socket import *
import datetime
#udp服务端代码
# from socket import *
# serverPort=12345
# serverSocket=socket(AF_INET,SOCK_DGRAM)
# serverSocket.bind(('192.168.3.8',serverPort))
# print('ready')
# while 1:
#     message,clientAddress=serverSocket.recvfrom(2048)
#     modifiedMessage=message.upper()
#     print(modifiedMessage)
#     serverSocket.sendto(modifiedMessage,clientAddress)
serverport = 12345
serverSocket = socket(AF_INET,SOCK_DGRAM)
serverSocket.bind(('127.0.0.1',serverport))
while 1:message,clientAddress = serverSocket.recvfrom(1024)print(message.decode('utf8')+"####"+str(datetime.datetime.now()))serverSocket.sendto(('服务端已收到'+message.decode('utf8')).encode('utf8'),clientAddress)

三、运行结果

客户端

发送消息

服务端


图形化UDP发包小工具相关推荐

  1. 基于JAVA_Swing的图形化GUI漏洞扫描工具开发的编程思维

    文章目录 前言 一.工具外观整体设计 二.漏洞检测类模块 总结 2022年6月27日更新此篇 前言 CSDN博客有很长一段时间没有更新,漏洞复现的文章也没有经常发了,原因是因为我这段时间在做一件大事, ...

  2. Java 入门-02-人机交互-图形化界面的小故事

    人机交互的小故事 1981 年,IBM 和 wicrosoft 共同推出的 ms-dos 系统,在黑屏下面输入命令 1981 年 4 月 27 日,施乐公司推出了第一个有操作窗口的系统,引起了很大的轰 ...

  3. ubuntu/linux系统知识(17)图形化的包管理工具Synaptic

    文章目录 Synaptic 软件包管理器是什么? 为什么你要使用像 Synaptic 软件包管理器这样的 "古老的" 软件? Synaptic 软件包管理器的功能 如何在 Ubun ...

  4. linux dwg查看软件下载,CAD迷你看图 - DWG文件浏览小工具

    CAD迷你看图是一款DWG文件浏览小工具,软件支持AutoCAD DWG/DSF等常用图纸文件,运行速度很快,并提供了DWG图形的平移.缩放.全屏等常用功能.绿盟这里为大家整理了这款软件的各个版本,有 ...

  5. 图形化的 Nginx 配置管理工具:NginxWebUI

    Nginx,作为最常见的HTTP和反向代理 Web 服务器之一,使用广泛.Nginx 功能丰富,使用特有的 nginx config 配置文件,可配置性强,模块众多. 但是,这也使得在日常配置时较为繁 ...

  6. python实现tcp发包_python 多线程tcp udp发包 Dos工具。

    现在肉鸡上面linux越来越多,都默认安装了python,有时候没有工具的时候可以自己写一个: 下面是支持 tcp和udp的python的发包代码: import socket,sys,threadi ...

  7. python socket发包_python 多线程tcp udp发包 Dos工具。

    [使用 异步多线程TCP Socket 实现进程间通信(VC 6.0 , BCB6.0调试通过)            进程间通信有很多种方式,比如说 Pipe,共享内存,DDE,Socket等,关于 ...

  8. linux/windows下udp测试小工具

    原文:https://www.zendstudio.net/archives/tcp-udp-socket-toolkit/ 还记得我在好久好久之前和你们推荐的Fiddler和Charles debu ...

  9. linux中的图形化UDP调试工具

    sokit freeware version: 1.3.1 (GPLv3) website: https://github.com/sinpolib/sokit/ 这是一个TCP / UDP数据包收发 ...

  10. Zeit – Linux图形化中定时任务的工具

    导读 Zeit是一个开源工具,用于通过"crontab"和"at"来调度任务.它提供了一个简单的接口来安排一次性的任务或重复性的任务.Zeit还带有一个闹钟和计 ...

最新文章

  1. C#编码实践:使用委托和特性调用指定函数
  2. B - 娜娜梦游仙境系列——跳远女王
  3. ICMP隧道工具ptunnel
  4. Mac 安装rabbitmq
  5. windows系统自动化设置
  6. Android学习总结00之废话
  7. Centos源码安装Python3
  8. Cpdetector编码识别
  9. mac怎么给python下载库_关于macos:在Python中安装库
  10. 测试连接数据库是否成功
  11. 地球人来源2【地底爬虫人访谈】
  12. 一种新型智慧停车场车位占用监测模块
  13. 计算机网络教程第5版-第1章计算机网络概述
  14. 计算机主板维修,计算机主板维修从业技能全程通(70M)*
  15. gitbook踩坑指南-无法转pdf、epub等;pdf调字体大小
  16. 馄饨 (hún tun)
  17. sql语句:简写拼音查询
  18. (超详细)大数据Hadoop之HDFS组件
  19. 桌面计算机未响应怎么办,电脑桌面假死(点击无反应)怎么解决?试试这三种处理方法吧...
  20. 台式计算机耳机有杂音怎么办,耳机有杂音,小编教你电脑耳机有杂音怎么办

热门文章

  1. 计算机二级2018VB题库百度云,计算机二级vb题库2017
  2. 使用JS导出表格为Excel
  3. Python 3.9.5 官方中文文档及打包下载
  4. 如何搭建前端开发环境
  5. SpreadJS使用小结
  6. 高效记忆/形象记忆(11)110数字编码表 51-60
  7. 网络传输协议都有什么
  8. java 按拼音模糊搜索汉字_java 自动补全 java 搜索自动匹配 java 汉字拼音搜索
  9. nv驱动版本linux,完善支持NV显卡Linux驱动275.19正式版,275.19增加了对
  10. 西安电子科技大学833真题_【考研名校】2021西安电子科技大学考研资料及历年真题解析汇总...