Python学习_任务12_网络编程UDP

计算机网络是人类文明进步的重要因素

本示例用一个窗体程序做客户端,服务端程序收到报文后直接在控制台打印表示收到了报文

客户端:

# - Tutorial 12.1
# - 2020-2-8
# - Johan
# - 题目:
#   1、客户端程序
from tkinter import *
from socket import *


class Client:
    def __init__(self):
        window = Tk()
        window.title('客户端')
        window.geometry('240x120')

        var = StringVar()
        frame = Frame(window)
        frame.pack(fill=X)
        label_msg = Label(frame, text='消息:')
        label_msg.grid(row=1, column=0)
        entry_msg = Entry(frame, textvariable=var)
        entry_msg.grid(row=1, column=1)
        button = Button(frame, text='发送', width=20,
                        command=lambda: self.send_msg(var.get()))
        button.grid(row=2, column=1)
        window.mainloop()

    # 发送消息
    def send_msg(self, msg):
        host = '127.0.0.1'   # 目的IP
        port = 34601         # 目的端口号
        dst_ip = (host, port)
        udp_client_socket = socket(AF_INET, SOCK_DGRAM)
        udp_client_socket.sendto(msg.encode('utf-8'), dst_ip)
        print('Send >>> %s' % msg)

# Main
Client()

服务端:

# - Tutorial 12.2
# - 2020-2-8
# - Johan
# - 题目:
#   1、服务端程序
from socket import *

host = ''     # 监听时IP可不指定
port = 34601  # 监听的端口号
src_ip = (host, port)
buff = 1024
udp_server_socket = socket(AF_INET, SOCK_DGRAM)
udp_server_socket.bind(src_ip)
print('Server started...')
while True:
    data, ip = udp_server_socket.recvfrom(buff)
    print('[From %s]%s' % (ip[0], data.decode('utf-8')))
udp_server_socket.close()

运行结果:

有兴趣的可以自己改一下代码,看一下不进行data.decode()操作时,原本的报文内容呗Python用什么数据结构保存

对传输内容有格式要求的,可以了解一下按json格式的文本传输,Python有很方便的解析json的包,解析结果是一个字典类型

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值