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入门教程
Apr 03 Python
python使用邻接矩阵构造图代码示例
Nov 10 Python
Python多线程爬虫实战_爬取糗事百科段子的实例
Dec 15 Python
Python+OpenCV人脸检测原理及示例详解
Oct 19 Python
python使用MQTT给硬件传输图片的实现方法
May 05 Python
python3.7 使用pymssql往sqlserver插入数据的方法
Jul 08 Python
Flask框架模板继承实现方法分析
Jul 31 Python
在Python中使用MySQL--PyMySQL的基本使用方法
Nov 19 Python
Python常用模块os.path之文件及路径操作方法
Dec 03 Python
python数据预处理 :样本分布不均的解决(过采样和欠采样)
Feb 29 Python
Python使用sys.exc_info()方法获取异常信息
Jul 23 Python
python中pop()函数的语法与实例
Dec 01 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中自定义函数dump查看数组信息类似var_dump
2014/01/27 PHP
PHP+MYSQL中文乱码问题
2015/07/01 PHP
js实现iframe动态调整高度的代码
2008/01/06 Javascript
jquery 通过name快速取值示例
2014/01/24 Javascript
js Object2String方便查看js对象内容
2014/11/24 Javascript
学做Bootstrap的第一个页面
2016/05/15 HTML / CSS
web 前端常用组件之Layer弹出层组件
2016/09/22 Javascript
Vue中fragment.js使用方法详解
2017/03/09 Javascript
vue-cli的eslint相关用法
2017/09/29 Javascript
Angular 4中如何显示内容的CSS样式示例代码
2017/11/06 Javascript
Vue打包后出现一些map文件的解决方法
2018/02/13 Javascript
Javascript的console['']常用输入方法汇总
2018/04/26 Javascript
vue 解决遍历对象显示的顺序不对问题
2019/11/07 Javascript
Node.js API详解之 Error模块用法实例分析
2020/05/14 Javascript
python获取当前时间对应unix时间戳的方法
2015/05/15 Python
python 连接sqlite及简单操作
2017/06/30 Python
python语言中with as的用法使用详解
2018/02/23 Python
Python批量查询关键词微信指数实例方法
2019/06/27 Python
django 类视图的使用方法详解
2019/07/24 Python
Python3 实现爬取网站下所有URL方式
2020/01/16 Python
python进行参数传递的方法
2020/05/12 Python
推荐10个CSS3 制作的创意下拉菜单效果
2014/02/11 HTML / CSS
详解Canvas事件绑定
2018/06/27 HTML / CSS
泰国办公用品购物网站:OfficeMate
2018/02/04 全球购物
英国赛车、汽车改装和摩托车零件购物网站:Demon Tweeks
2018/10/29 全球购物
大学应届毕业生个人求职信
2013/09/23 职场文书
建筑专业自我鉴定
2013/10/22 职场文书
厨师个人自我鉴定范文
2014/04/19 职场文书
培训科主任岗位职责
2014/08/08 职场文书
硕士学位论文评语
2014/12/31 职场文书
统计员岗位职责
2015/02/11 职场文书
怎样写家长意见
2015/06/04 职场文书
名人传读书笔记
2015/06/26 职场文书
学校教师培训工作总结
2015/10/14 职场文书
励志语录:只有自己足够强大,才能不被别人践踏
2020/01/09 职场文书
Python访问Redis的详细操作
2021/06/26 Python