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 相关文章推荐
Python实现批量转换文件编码的方法
Jul 28 Python
两个使用Python脚本操作文件的小示例分享
Aug 27 Python
python 实现上传图片并预览的3种方法(推荐)
Jul 14 Python
Python如何快速上手? 快速掌握一门新语言的方法
Nov 14 Python
python3+PyQt5泛型委托详解
Apr 24 Python
redis之django-redis的简单缓存使用
Jun 07 Python
python版opencv摄像头人脸实时检测方法
Aug 03 Python
Python实现i人事自动打卡的示例代码
Jan 09 Python
初学者学习Python好还是Java好
May 26 Python
用Python提取PDF表格的方法
Apr 11 Python
python pygame入门教程
Jun 01 Python
如何用python清洗文件中的数据
Jun 18 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 strstr查找字符串中是否包含某些字符的查找函数
2010/06/03 PHP
通过实例解析PHP数据类型转换方法
2020/07/11 PHP
关于hashchangebroker和statehashable的补充文档
2011/08/08 Javascript
JS命名空间的另一种实现
2013/08/09 Javascript
jQuery中校验时间格式的正则表达式小结
2013/09/22 Javascript
解决jquery中美元符号命名冲突问题
2014/01/08 Javascript
js写的方法实现上传图片之后查看大图
2014/03/05 Javascript
JS设置cookie、读取cookie
2016/02/24 Javascript
javascript使用Promise对象实现异步编程
2016/03/01 Javascript
AngularJs directive详解及示例代码
2016/09/01 Javascript
详解Angular的数据显示优化处理
2016/12/26 Javascript
JavaScript实现换肤功能
2017/09/15 Javascript
Three.js加载外部模型的教程详解
2017/11/10 Javascript
JS实现中英文混合文字溢出友好截取功能
2018/08/06 Javascript
javascript中的闭包概念与用法实践分析
2019/07/26 Javascript
解决layui表格内文本超出隐藏的问题
2019/09/12 Javascript
vue-cli 为项目设置别名的方法
2019/10/15 Javascript
Vue跨域请求问题解决方案过程解析
2020/08/07 Javascript
python ElementTree 基本读操作示例
2009/04/09 Python
35个Python编程小技巧
2014/04/01 Python
Python中sort和sorted函数代码解析
2018/01/25 Python
python版大富翁源代码分享
2018/11/19 Python
正则给header的冒号两边参数添加单引号(Python请求用)
2019/08/09 Python
Tensorflow 自定义loss的情况下初始化部分变量方式
2020/01/06 Python
Tensorflow tf.nn.depthwise_conv2d如何实现深度卷积的
2020/04/20 Python
CSS3中使用RGBa来调节透明度的教程
2016/05/09 HTML / CSS
迪斯尼商品官方网站:ShopDisney
2016/08/01 全球购物
英国领先的杂志订阅网站:Magazine.co.uk
2018/01/25 全球购物
关于人生的感言
2014/01/17 职场文书
动画设计系毕业生求职信
2014/07/15 职场文书
2014年招商工作总结
2014/11/22 职场文书
2015关爱留守儿童工作总结
2014/12/12 职场文书
少先队工作总结2015
2015/05/13 职场文书
2015初中政治教学工作总结
2015/07/21 职场文书
2016党性教育学习心得体会
2016/01/21 职场文书
Memcached介绍及php-memcache扩展安装
2021/04/01 PHP