网络编程 2.UDP网络程序

UDP网络程序

一、功能:
1.发送信息
2.接收信息
3.退出系统

二、框架设计
1.发送信息 send_msg()
2.接收信息 recv_msg()
3.主程序入口 main()
4.程序独立运行时才启动

三、实现步骤
1.main()
(1).创建socket对象,绑定端口
(2).循环展示功能菜单
(3).接收用户输入的选择
(4).根据用户的选择调用对应的方法
(5).退出系统
(6).关闭socket

2.send_msg()
(1).定义变量接收用户输入的接收方IP、port
(2).定义变量接收用户输入的发送内容
(3).调用sendto()发送信息

3.recv_msg()
(1).调动recvfrom()接收信息
(2).定义变量接收并处理收到的信息
(3).输出处理后的信息

import socket

# 主程序入口
def main():
    # 创建socket
    socket_obj = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
    # 绑定端口
    addr_local = ('',9999)
    socket_obj.bind(addr_local)

    # 循环展示功能菜单
    while True:
        str = '\n\n---------------------\n'
        str += '----- 1.发送信息 -----\n'
        str += '----- 2.接收信息 -----\n'
        str += '----- 3.退出系统 -----\n'
        str += '---------------------'
        print(str)

        # 接收用户输入的选择
        u_sel = int(input('选择功能:'))

        # 根据用户的选择调用对应功能
        if u_sel == 1 :
            print('发送信息:')
            send_msg(socket_obj)
        elif u_sel == 2 :
            print('接收信息:')
            recv_msg(socket_obj)
        elif u_sel == 3 :
            print('退出成功系统')
            break
        else:
            print('请根据菜单输入对应的编号')

    # 关闭socket
    socket_obj.close()


# 发送信息
def send_msg(socket_obj):
    # 用户输入接收端IP、port
    addr_IP = input('接收端IP:')
    if len(addr_IP) == 0 :
        addr_IP = '192.168.124.35'
        print('使用默认IP:192.168.124.35')
    addr_p = input('接收端端口号:')
    if len(addr_p) == 0 :
        addr_p = 9999
        print('使用默认端口:9999')
    addr = (addr_IP,int(addr_p))
    # 用户输入发送内容
    context = input('发送内容:')
    con_bit = context.encode()
    # 发送信息
    socket_obj.sendto(con_bit,addr)
    print('发送成功')

# 接收信息
def recv_msg(socket_obj):
    # 接收信息
    recv_con,recv_from = socket_obj.recvfrom(1024)
    # 处理接收到的数据
    recv_con = recv_con.decode(errors='ignore')
    # 显示处理后的数据
    print(f'收到来自:{recv_from} 的信息:{recv_con}')

if __name__ == '__main__' :
    main()
posted @ 2021-12-15 02:09  HyeJeong  阅读(195)  评论(0)    收藏  举报