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使用os模块的os.walk遍历文件夹示例
Jan 27 Python
python使用7z解压软件备份文件脚本分享
Feb 21 Python
python 专题九 Mysql数据库编程基础知识
Mar 16 Python
pygame加载中文名mp3文件出现error
Mar 31 Python
Python smtplib实现发送邮件功能
May 22 Python
python中使用print输出中文的方法
Jul 16 Python
Python寻找路径和查找文件路径的示例
Jul 10 Python
在django admin中添加自定义视图的例子
Jul 26 Python
python自动结束mysql慢查询会话的实例代码
Oct 27 Python
Pytorch使用PIL和Numpy将单张图片转为Pytorch张量方式
May 25 Python
Python 串口通信的实现
Sep 29 Python
详解Pymongo常用查询方法总结
Jan 29 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的cURL库简介及使用示例
2015/02/06 PHP
轻松实现php文件上传功能
2017/02/17 PHP
Laravel + Elasticsearch 实现中文搜索的方法
2020/02/02 PHP
犀利的js 函数集合
2009/06/11 Javascript
javaScript 简单验证代码(用户名,密码,邮箱)
2009/09/28 Javascript
jQuery页面滚动浮动层智能定位实例代码
2011/08/23 Javascript
Kibo 用于处理键盘事件的Javascript工具库
2011/10/28 Javascript
javascript 快速排序函数代码
2012/05/30 Javascript
javascript延时加载之defer测试
2012/12/28 Javascript
Extjs4中Form的使用之本地hiddenfield
2013/11/26 Javascript
jQuery判断checkbox是否选中的3种方法
2014/08/12 Javascript
jquery实现浮动的侧栏实例
2015/06/25 Javascript
JavaScript jQuery 中定义数组与操作及jquery数组操作
2015/12/18 Javascript
深入分析javascript中的错误处理机制
2016/07/17 Javascript
js获取元素下的第一级子元素的方法(推荐)
2017/03/05 Javascript
纯js实现画一棵树的示例
2017/09/05 Javascript
对vue下点击事件传参和不传参的区别详解
2018/09/15 Javascript
Vue+Webpack完美整合富文本编辑器TinyMce的方法
2018/11/30 Javascript
小程序扫描普通链接二维码跳转小程序指定界面方法
2019/05/07 Javascript
Node.js 多进程处理CPU密集任务的实现
2019/05/26 Javascript
javascript实现自由编辑图片代码详解
2019/06/21 Javascript
在Angular中实现一个级联效果的下拉框的示例代码
2020/05/20 Javascript
[00:55]深扒TI7聊天轮盘语音出处3
2017/05/11 DOTA
python获取标准北京时间的方法
2015/03/24 Python
Python字符串拼接六种方法介绍
2017/12/18 Python
python中sys.argv函数精简概括
2018/07/08 Python
python程序封装为win32服务的方法
2021/03/07 Python
python绘制散点图并标记序号的方法
2018/12/11 Python
python+opencv实现高斯平滑滤波
2020/07/21 Python
Python如何爬取微信公众号文章和评论(基于 Fiddler 抓包分析)
2019/06/28 Python
PyTorch 随机数生成占用 CPU 过高的解决方法
2020/01/13 Python
Opencv图像处理:如何判断图片里某个颜色值占的比例
2020/06/03 Python
有兼职工作经历的简历自我评价
2014/03/07 职场文书
个人综合鉴定材料
2014/05/23 职场文书
村长反四风问题个人对照检查材料
2014/09/21 职场文书
小喇叭开始广播了! 四十多年前珍贵老照片
2022/05/09 无线电