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基于OpenCV实现视频的人脸检测
Jan 23 Python
对Python random模块打乱数组顺序的实例讲解
Nov 08 Python
Python生成器的使用方法和示例代码
Mar 04 Python
python 随机森林算法及其优化详解
Jul 11 Python
python Django 创建应用过程图示详解
Jul 29 Python
pytorch numpy list类型之间的相互转换实例
Aug 18 Python
pandas read_excel()和to_excel()函数解析
Sep 19 Python
keras .h5转移动端的.tflite文件实现方式
May 25 Python
python datetime时间格式的相互转换问题
Jun 11 Python
为什么python比较流行
Jun 19 Python
Python基础教程之输入输出和运算符
Jul 26 Python
pymongo insert_many 批量插入的实例
Dec 05 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
文件上传类
2006/10/09 PHP
PHP+MySQL5.0中文乱码解决方法
2006/11/20 PHP
php 生成饼图 三维饼图
2009/09/28 PHP
php解析url的三个示例
2014/01/20 PHP
ThinkPHP3.1新特性之多层MVC的支持
2014/06/19 PHP
CentOS安装php v8js教程
2015/02/26 PHP
PHP操作MySQL中BLOB字段的方法示例【存储文本与图片】
2017/09/15 PHP
PHP使用PDO、mysqli扩展实现与数据库交互操作详解
2019/07/20 PHP
tp5框架使用cookie加密算法实现登录功能示例
2020/02/10 PHP
javascript实现仿银行密码输入框效果的代码
2007/12/13 Javascript
JavaScript怎么判断图片是否加载完成以便获取其尺寸
2014/05/08 Javascript
jquery实现页面关键词高亮显示的方法
2015/03/12 Javascript
全面了解js中的script标签
2016/07/04 Javascript
详解webpack 如何集成第三方js库
2017/06/29 Javascript
Vue之Watcher源码解析(2)
2017/07/19 Javascript
JavaScript中Object值合并方法详解
2017/12/22 Javascript
详解html-webpack-plugin用法全解
2018/01/22 Javascript
React中使用UEditor百度富文本的方法
2018/08/22 Javascript
[01:32]DOTA2上海特锦赛现场采访:最想COS的英雄
2016/03/25 DOTA
django开发之settings.py中变量的全局引用详解
2017/03/29 Python
python中yaml配置文件模块的使用详解
2018/04/27 Python
Python迭代器定义与简单用法分析
2018/04/30 Python
基于树莓派的语音对话机器人
2019/06/17 Python
在Pytorch中计算自己模型的FLOPs方式
2019/12/30 Python
利用python汇总统计多张Excel
2020/09/22 Python
带有css3动画效果的兼容多浏览器简单导航条示例
2014/01/26 HTML / CSS
CSS3实现点击放大的动画实例代码
2017/02/27 HTML / CSS
香港万宁官方海外旗舰店:香港健与美连锁店
2018/09/27 全球购物
软件配置管理有什么好处
2015/04/15 面试题
餐饮业会计岗位职责
2013/12/19 职场文书
青年安全生产示范岗事迹材料
2014/05/04 职场文书
党的群众路线教育实践活动调研报告
2014/11/03 职场文书
电力工程合作意向书
2015/05/11 职场文书
导游词之山东红叶谷
2019/10/31 职场文书
python使用opencv对图像添加噪声(高斯/椒盐/泊松/斑点)
2022/04/06 Python
python使用pycharm安装pyqt5以及相关配置
2022/04/22 Python