python实现的多任务版udp聊天器功能案例


Posted in Python onNovember 13, 2019

本文实例讲述了python实现的多任务版udp聊天器。分享给大家供大家参考,具体如下:

python实现的多任务版udp聊天器功能案例

说明

编写一个有2个线程的程序
线程1用来接收数据然后显示
线程2用来检测键盘数据然后通过udp发送数据

要求

实现上述要求
总结多任务程序的特点

参考代码:

import socket
import threading
def send_msg(udp_socket):
  """获取键盘数据,并将其发送给对方"""
  while True:
    # 1. 从键盘输入数据
    msg = input("\n请输入要发送的数据:")
    # 2. 输入对方的ip地址
    dest_ip = input("\n请输入对方的ip地址:")
    # 3. 输入对方的port
    dest_port = int(input("\n请输入对方的port:"))
    # 4. 发送数据
    udp_socket.sendto(msg.encode("utf-8"), (dest_ip, dest_port))
def recv_msg(udp_socket):
  """接收数据并显示"""
  while True:
    # 1. 接收数据
    recv_msg = udp_socket.recvfrom(1024)
    # 2. 解码
    recv_ip = recv_msg[1]
    recv_msg = recv_msg[0].decode("utf-8")
    # 3. 显示接收到的数据
    print(">>>%s:%s" % (str(recv_ip), recv_msg))
def main():
  # 1. 创建套接字
  udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
  # 2. 绑定本地信息
  udp_socket.bind(("", 7890))
  # 3. 创建一个子线程用来接收数据
  t = threading.Thread(target=recv_msg, args=(udp_socket,))
  t.start()
  # 4. 让主线程用来检测键盘数据并且发送
  send_msg(udp_socket)
if __name__ == "__main__":
  main()

更多关于Python相关内容可查看本站专题:《Python Socket编程技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
linux环境下安装pyramid和新建项目的步骤
Nov 27 Python
Python中的Numpy入门教程
Apr 26 Python
对变量赋值的理解--Pyton中让两个值互换的实现方法
Nov 29 Python
Python变量赋值的秘密分享
Apr 03 Python
Python 中的range(),以及列表切片方法
Jul 02 Python
python多进程使用及线程池的使用方法代码详解
Oct 24 Python
在matplotlib的图中设置中文标签的方法
Dec 13 Python
Python 中的 global 标识对变量作用域的影响
Aug 12 Python
Python环境Pillow( PIL )图像处理工具使用解析
Sep 12 Python
python获取全国城市pm2.5、臭氧等空气质量过程解析
Oct 12 Python
python paramiko远程服务器终端操作过程解析
Dec 14 Python
Python同时处理多个异常的方法
Jul 28 Python
利用python实现PSO算法优化二元函数
Nov 13 #Python
使用python制作一个解压缩软件
Nov 13 #Python
Python 脚本实现淘宝准点秒杀功能
Nov 13 #Python
基于python实现把图片转换成素描
Nov 13 #Python
Django连接数据库并实现读写分离过程解析
Nov 13 #Python
Pandas操作CSV文件的读写实现方法
Nov 13 #Python
Python倒排索引之查找包含某主题或单词的文件
Nov 13 #Python
You might like
php基于str_pad实现卡号不足位数自动补0的方法
2014/11/12 PHP
Codeigniter框架实现获取分页数据和总条数的方法
2014/12/05 PHP
thinkphp多层MVC用法分析
2015/12/30 PHP
php 使用fopen函数创建、打开文件详解及实例代码
2016/09/24 PHP
PHP编程一定要改掉的5个不良习惯
2020/09/18 PHP
用JavaScript 处理 URL 的两个函数代码
2007/08/13 Javascript
js chrome浏览器判断代码
2010/03/28 Javascript
jquery 模拟雅虎首页的点击对话框效果
2010/04/11 Javascript
基于jquery点击自以外任意处,关闭自身的代码
2012/02/10 Javascript
javascript object array方法使用详解
2012/12/03 Javascript
js判断undefined变量类型使用typeof
2013/06/03 Javascript
jquery统计用户选中的复选框的个数
2014/06/06 Javascript
javascript使用prototype完成单继承
2014/12/24 Javascript
jQuery学习笔记之创建DOM元素
2015/01/19 Javascript
理解javascript对象继承
2016/04/17 Javascript
Node.js 数据加密传输浅析
2016/11/16 Javascript
JS正则RegExp.test()使用注意事项(不具有重复性)
2016/12/28 Javascript
使用Angular material主题定义自己的组件库的配色体系
2019/09/04 Javascript
js实现贪吃蛇小游戏(加墙)
2020/07/31 Javascript
JavaScript用document.write()输出换行的示例代码
2020/11/26 Javascript
Python算术运算符实例详解
2017/05/31 Python
使用PyCharm进行远程开发和调试的实现
2019/11/04 Python
Pytorch 之修改Tensor部分值方式
2019/12/27 Python
jupyter lab文件导出/下载方式
2020/04/22 Python
Python列表去重复项的N种方法(实例代码)
2020/05/12 Python
Python Request类源码实现方法及原理解析
2020/08/17 Python
python绘制汉诺塔
2021/03/01 Python
物理学专业求职信
2014/07/04 职场文书
预备党员对照检查材料思想汇报
2014/09/24 职场文书
关于学习的决心书
2015/02/05 职场文书
小学音乐教师个人工作总结
2015/02/05 职场文书
学校百日安全活动总结
2015/05/07 职场文书
张丽莉事迹观后感
2015/06/16 职场文书
护理培训心得体会
2016/01/22 职场文书
详解nginx location指令
2022/01/18 Servers
试用1103暨1103、1101同门大比武 [ DAIWEI ]
2022/04/05 无线电