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的Django框架中的数据库配置指南
Jul 17 Python
pandas修改DataFrame列名的方法
Apr 08 Python
Python简单计算文件MD5值的方法示例
Apr 11 Python
python3 requests中使用ip代理池随机生成ip的实例
May 07 Python
python用BeautifulSoup库简单爬虫实例分析
Jul 30 Python
flask-socketio实现WebSocket的方法
Jul 31 Python
在Python中使用gRPC的方法示例
Aug 08 Python
对python3中的RE(正则表达式)-详细总结
Jul 23 Python
Python requests模块安装及使用教程图解
Jun 30 Python
Python使用Selenium模拟浏览器自动操作功能
Sep 08 Python
深入理解python协程
Jun 15 Python
python多次执行绘制条形图
Apr 20 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异步执行的常用方式详解
2013/06/03 PHP
yii2.0之GridView自定义按钮和链接用法
2014/12/15 PHP
PhpStorm 如何优雅的调试Hyperf的方法步骤
2019/11/24 PHP
document.designMode的功能与使用方法介绍
2007/11/22 Javascript
jquery ajax方式直接提交整个表单核心代码
2013/08/15 Javascript
jquery限定文本框只能输入数字即整数和小数
2013/11/29 Javascript
JS执行删除前的判断代码
2014/02/18 Javascript
jquery库或JS文件在eclipse下报错问题解决方法
2014/04/17 Javascript
jquery ztree实现下拉树形框使用到了json数据
2014/05/14 Javascript
js监听鼠标点击和键盘点击事件并自动跳转页面
2014/09/24 Javascript
理解jQuery stop()方法
2014/11/21 Javascript
运行Node.js的IIS扩展iisnode安装配置笔记
2015/03/02 Javascript
BootStrap入门学习第一篇
2017/08/28 Javascript
angular2系列之路由转场动画的示例代码
2017/11/09 Javascript
Vue.js表单标签中的单选按钮、复选按钮和下拉列表的取值问题
2017/11/22 Javascript
vue axios请求频繁时取消上一次请求的方法
2018/11/10 Javascript
JS实现倒计时图文效果
2018/11/17 Javascript
[47:26]完美世界DOTA2联赛 LBZS vs Forest 第二场 11.07
2020/11/09 DOTA
[01:00:49]DOTA2-DPC中国联赛 正赛 Ehome vs iG BO3 第二场 1月31日
2021/03/11 DOTA
Python中支持向量机SVM的使用方法详解
2017/12/26 Python
Python读取properties配置文件操作示例
2018/03/29 Python
Django CBV类的用法详解
2019/07/26 Python
Python读取YAML文件过程详解
2019/12/30 Python
使用Python实现NBA球员数据查询小程序功能
2020/11/09 Python
CSS3实现的炫酷菜单代码分享
2015/03/12 HTML / CSS
英国最大的宠物食品和宠物用品网上零售商: Zooplus
2016/08/01 全球购物
AVI-8手表美国官方商店:AVI-8 USA
2019/04/10 全球购物
给分销商的致歉信
2014/01/14 职场文书
大学老师推荐信
2014/02/25 职场文书
授权委托书格式
2014/07/31 职场文书
街道党工委党的群众路线教育实践活动对照检查材料思想汇报
2014/10/05 职场文书
婚礼嘉宾致辞
2015/07/28 职场文书
MySQL索引是啥?不懂就问
2021/07/21 MySQL
使用CSS3实现按钮悬停闪烁动态特效代码
2021/08/30 HTML / CSS
Nginx使用Lua模块实现WAF的原理解析
2021/09/04 Servers
springboot实现string转json json里面带数组
2022/06/16 Java/Android