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 开发者节省时间的10个方法
Oct 02 Python
举例讲解Python中的死锁、可重入锁和互斥锁
Nov 05 Python
python 字典(dict)按键和值排序
Jun 28 Python
python修改list中所有元素类型的三种方法
Apr 09 Python
使用 Python 实现文件递归遍历的三种方式
Jul 18 Python
python: 自动安装缺失库文件的方法
Oct 22 Python
django 邮件发送模块smtp使用详解
Jul 22 Python
Django中自定义查询对象的具体使用
Oct 13 Python
python实现小世界网络生成
Nov 21 Python
Python异常原理及异常捕捉实现过程解析
Mar 25 Python
Python读取xlsx数据生成图标代码实例
Aug 12 Python
Python3获取cookie常用三种方案
Oct 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
浅析PHP原理之变量(Variables inside PHP)
2013/08/09 PHP
zend optimizer在wamp的基础上安装图文教程
2013/10/26 PHP
ThinkPHP进程计数类Process用法实例详解
2015/09/25 PHP
kindeditor 加入七牛云上传的实例讲解
2017/11/12 PHP
屏蔽F1~F12的快捷键的js函数
2010/05/06 Javascript
juqery 学习之四 筛选查找
2010/11/30 Javascript
用js代码改变单选框选中状态的简单实例
2013/12/18 Javascript
分享10个原生JavaScript技巧
2015/04/20 Javascript
javascript小数精度丢失的完美解决方法
2016/05/31 Javascript
Javascript中的数组常用方法解析
2016/06/17 Javascript
JS 实现 ajax 异步浏览器兼容问题
2017/01/21 Javascript
Ionic3 UI组件之autocomplete详解
2017/06/08 Javascript
Web开发使用Angular实现用户密码强度判别的方法
2017/09/27 Javascript
基于jQuery的$.getScript方法去加载javaScript文档解析
2017/11/08 jQuery
Vue中v-for的数据分组实例
2018/03/07 Javascript
详解ES6中的三种异步解决方案
2018/06/28 Javascript
jquery实现垂直无限轮播的方法分析
2019/07/16 jQuery
Jquery实现获取子元素的方法分析
2019/08/24 jQuery
js实现GIF动图分解成多帧图片上传
2019/10/24 Javascript
JS实现数据动态渲染的竖向步骤条
2020/06/24 Javascript
[02:20]DOTA2英雄基础教程 黑暗贤者
2013/12/19 DOTA
Python中pygame的mouse鼠标事件用法实例
2015/11/11 Python
Python 列表理解及使用方法
2017/10/27 Python
浅谈Django自定义模板标签template_tags的用处
2017/12/20 Python
对dataframe数据之间求补集的实例详解
2019/01/30 Python
Python解析多帧dicom数据详解
2020/01/13 Python
Python socket处理client连接过程解析
2020/03/18 Python
详解css3 mask遮罩实现一些特效
2018/10/24 HTML / CSS
意大利独特而优质的家居用品:Fazzini
2018/12/05 全球购物
公司董事长职责
2013/12/12 职场文书
酒店管理毕业生自荐信
2014/05/25 职场文书
人大调研汇报材料
2014/08/14 职场文书
法学专业大学生实习自我鉴定
2014/10/05 职场文书
群众路线查摆问题及整改措施
2014/10/10 职场文书
创业计划书之农家乐
2019/10/09 职场文书
Python利用zhdate模块实现农历日期处理
2022/03/31 Python