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 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> python高级 笔记 06 (使用UDP编写一个聊天器) -> 正文阅读

[网络协议]python高级 笔记 06 (使用UDP编写一个聊天器)

UDP聊天器

3个功能
1.获取键盘数据,将其发送给对方
2.接受数据并显示
3.退出聊天系统

函数拆分
Send_msg() 发送信息
Recv_msg() 接受信息
main() 主入口

发送信息
input()
Udp_socket_sendto(content.encode(),(ipaddr,int(port)))

接受信息
recv_data,recv_text = recvfrom(1024)

代码

'''
一。功能
1.发送信息
2.接受信息
3.退出系统

二。框架设计
1.发送信息 send_msg()
2.接受信息 recv_msg()
3.程序的主入口 main()
4.当程度独立运行的时候,才启动聊天器

三。实现步骤
1. 发送信息 send_msg()
1)定义变量 接受用户和输入的接收方的 IP地址
2)定义变量 接受用户和输入的接收方的 端口号
3)定义变量 接受用户和输入的接收方的 内容
4) 使用socket的sendto() 发送信息


2.接受信息 recv_msg()
1) 使用socket接收数据
2) 解码数据
3)输出显示

3. 主入口main()
1) 创建套接字
2) 绑定端口
3) 打印菜单
4) 接受用户输入的选项
5) 判断用户的选择,并调用对应的函数

'''

import socket


def send_msg(udp_socket):
    '''发送信息的函数'''
    # 1)定义变量 接受用户和输入的接收方的 IP地址
    # 判断是否需要默认
    ipaddr = input("请输入接收方的IP地址:\n")
    if len(ipaddr) == 0:
        ipaddr = "192.168.x.xx"
        print("当前接收方默认设置为[%s]" % ipaddr)
    # 2)定义变量 接受用户和输入的接收方的 端口号
    port = input("请输入接收方的端口号:\n")
    if len(port) == 0:
        port = "8080"
        print("当前接收方默认设置为[%s]" % port)
    # 3)定义变量 接受用户和输入的接收方的 内容发送
    content = input("请输入要发送的内容:\n")
    # 4) 使用socket的sendto() 发送信息
    udp_socket.sendto(content.encode(), (ipaddr, int(port)))


def recv_msg(udp_socket):
    '''接收信息的函数'''
    # 1) 使用socket接收数据
    recv_data, ip_port = udp_socket.recvfrom(1024)
    # 2) 解码数据
    recv_text = recv_data.decode()
    # 3)输出显示
    print("接收到[%s]的消息:%s" % (str(ip_port), recv_text))


def main():
    '''程序的主入口
    '''
    # 1) 创建套接字
    udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    # 2) 绑定端口
    # udp_socket.bind(address)
    # address是一个元素("ip地址",端口号)
    udp_socket.bind(("", 8080))
    while True:
        # 3) 打印菜单(循环)
        print("***********************************")
        print("************ 1.发送信息 *************")
        print("************ 2.接受信息 *************")
        print("************ 3.退出系统 *************")
        print("***********************************")
        # 4) 接受用户输入的选项
        sel_num = int(input("请输入选项:\n"))
        # 5) 判断用户的选择,并调用对应的函数
        if sel_num == 1:
            # print("您选择的是发送信息")
            # 调用发送信息的函数
            send_msg(udp_socket)
        elif sel_num == 2:
            # print("您选择的是接收信息")
            recv_msg(udp_socket)
        elif sel_num == 3:
            print("系统正在退出中...")
            print("系统退出完成!")
            break
    # 6) 关闭套接字
    udp_socket.close()


if __name__ == '__main__':
    # 程序独立运行的时候,才会启动聊天器
    main()

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-01-04 13:46:39  更:2022-01-04 13:47:06 
 
开发: 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/26 12:48:37-

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