IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> UDP服务器和客户端 -> 正文阅读

[系统运维]UDP服务器和客户端

1? 服务器端

代码:

'''GUI MAIN'''
import tkinter
from tkinter import END, messagebox
import os
import time
import threading
import socket

fileKey=""
filePath=""
#server thread
def serverThread():
    """UDP服务器线程函数"""
    messagebox.showinfo("notice","thread is beginning")
    BUFSIZE = 1024
    ip_port = ('127.0.0.1', 9999)
    server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)  # udp协议
    server.bind(ip_port)
    lb.insert("end","begin")

    while True:
        data,client_addr = server.recvfrom(BUFSIZE)
        lb.insert(END,time.strftime("(%H:%M:%S)")+str(client_addr)+":"+str(data)[1:])  
        lb.see(lb.size())      
        server.sendto(b'success',client_addr)
    
    server.close()
    messagebox.showinfo("tt","thread is over")
#server over
def BeginUDPserver():  
    """启动线程"""     
    exe_thread= threading.Thread(target=serverThread)
    exe_thread.setDaemon(True)
    exe_thread.start()    
  
    b.configure(state=tkinter.DISABLED)    

win=tkinter.Tk()
win.option_add("*Font", "宋体")
win.title("UDP服务器")
win.geometry("800x600")

#--------第1行---------------------------------
Lab=tkinter.Label(win,text="信息(UDP服务器端口为9999)")
Lab.grid(row=1,column=1)
#
b=tkinter.Button(win,text="启动服务",command=BeginUDPserver)
b.grid(row=1,column=2)
#---------第2行--------------------------------
sc = tkinter.Scrollbar(win)
sc.grid(row=2,column=2)

lb=tkinter.Listbox(win,width=80,height=28,selectmode="single",yscrollcommand=sc.set)
lb.grid(row=2,column=1)

sc.config(command=lb.yview)

win.mainloop()

2? UDP客户端

代码

'''GUI MAIN'''
import tkinter
from tkinter import messagebox
from tkinter import ttk
import time
import  threading
import socket

#按钮消息
def Submit():
    """UDP客户端发送数据"""
    MyIP=ServerIP.get()
    MyPORT=ServerPort.get()
    msg =entry.get()
    
    if len(MyIP.strip())<=0:
        messagebox.showerror("提醒","服务器IP不能为空")
        return 
    
    if len(MyPORT.strip())<=0:
        messagebox.showerror("提醒","服务器端口不能为空")
        return 

    if len(msg)<=0:
        messagebox.showerror("提醒","发送内容不能为空")
        return 

    BUFSIZE = 1024
    client = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)   
    ip_port = (MyIP, int(MyPORT))
    client.sendto(msg.encode('utf-8'),ip_port)
     
    data,server_addr = client.recvfrom(BUFSIZE)
    entry2.delete(0,"end")
    entry2.insert("end",str(data)[1:])
    #print('客户端recvfrom ',data,server_addr)
    client.close()    

win=tkinter.Tk()
win.option_add("*Font", "宋体")
win.title("UDP客户端")
win.geometry("800x600")

#--------第1行----------------------------
Lab1=tkinter.Label(win,text="服务器IP")
Lab1.grid(row=1,column=1)
#
ServerIP=tkinter.Entry(width=50)
ServerIP.grid(row=1,column=2)
ServerIP.insert(0,"127.0.0.1")

#--------第2行----------------------------
Lab2=tkinter.Label(win,text="服务器PORT")
Lab2.grid(row=2,column=1)
#
ServerPort=tkinter.Entry(width=50)
ServerPort.grid(row=2,column=2)
ServerPort.insert(0,"9999")

#---------第3行----------------------------
Lab3=tkinter.Label(win,text="发送内容")
Lab3.grid(row=3,column=1)
#
entry=tkinter.Entry(width=50)
entry.grid(row=3,column=2)
#
btsearch=tkinter.Button(win,text="发送数据",command=Submit)
btsearch.grid(row=3,column=3)
#----------第4行---------------------------
Lab4=tkinter.Label(win,text="反馈信息")
Lab4.grid(row=4,column=1)
#
entry2=tkinter.Entry(width=50)
entry2.grid(row=4,column=2)

win.mainloop()

3效果图

? ? ? ?

?

?

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-05-08 08:30:52  更:2022-05-08 08:34:58 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 17:52:55-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码