在之前的一篇文章(python网络编程-udp)中实现了一个简单的udp聊天器,只能在单线程下进行收发数据,在学习完多线程之后,实现一个能同时收发数据的udp聊天器。

说明:

  • 编写一个有2个线程的程序
  • 线程1用来接收数据然后显示
  • 线程2用来检测键盘数据然后通过udp发送数据

要求:

  1. 实现上述要求
  2. 总结多任务程序的特点

示例程序:

import socket
import threadingdef send_msg(udp_socket, dest_ip, dest_port):"""发送消息"""while True:send_data = input("请输入要发送的信息:")udp_socket.sendto(send_data.encode("utf-8"), (dest_ip, dest_port))def recv_msg(udp_socket):"""接收消息"""while True:recv_data = udp_socket.recvfrom(1024)recv_ip = recv_data[1]recv_msg = recv_data[0].decode("utf-8")print("\n>>%s:%s" % (recv_ip, recv_msg))def main():# 创建套接字udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)# 绑定本地端口udp_socket.bind(("", 8888))# 输入对方的ip和地址dest_ip  = input("请输入对方的ip:")dest_port = int(input("请输入对方的port:"))t1 = threading.Thread(target=send_msg, args=(udp_socket, dest_ip, dest_port))t1.start()t2 = threading.Thread(target=recv_msg, args=(udp_socket,))t2.start()if __name__ == "__main__":main()

终端运行结果:

$ python3 聊天器-多线程版.py
请输入对方的ip:192.168.92.130
请输入对方的port:8080
请输入要发送的信息:hello
请输入要发送的信息:
>>('192.168.92.130', 8080):666

网络调试助手的结果:

程序运行过程解析:

  • 首先创建套接字,并绑定到本地的端口8888
  • 输入要进行聊天的对方的ip和端口信息
  • 启动两个线程,一个线程用于发送数据,一个线程用于接收数据

转载于:https://www.cnblogs.com/zhangfengxian/p/python-chat-threading.html

python网络聊天器多线程版相关推荐

  1. Python UDP聊天器

    注释:下面的逻辑分析思路来自李伟老师,感谢在python学习道路上提供的帮助. 程序需求说明: 在一个客户端中编写个程序,有3个基本的功能: 1.首先获取键盘数据,并将其发送给对方 2.对方接收数据并 ...

  2. python 网络监控系统手机版下载_云视通网络监控系统手机版

    云视通是一款便于生活的监控软件,在使用之前,用户需要登录注册账号.注册步骤很简单,几步即可完成,如果不进行注册是无法进行使用的.在成功登录账号之后,便可与监控设备进行调节,包括获取实时画面,视频分享, ...

  3. python网络数据采集 第三版_(数据科学学习手札31)基于Python的网络数据采集(初级篇)...

    一.简介 在实际的业务中,我们手头的数据往往难以满足需求,这时我们就需要利用互联网上的资源来获取更多的补充数据,但是很多情况下,有价值的数据往往是没有提供源文件的直接下载渠道的(即所谓的API),这时 ...

  4. python 网络聊天服务端

    coding=utf-8 "' name:chenyang email: 2898891726@qq.com date : 2018-09-11 class : aid introduce: ...

  5. Python TCP聊天器

    注释:下面的逻辑分析思路来自李伟老师,感谢在python学习道路上提供的帮助. 需求性分析: 这次我们使用TCP的方式,编写的程序作为服务端接受消息,同时使用网络调试助手模拟客户端,网络调试助手输入对 ...

  6. python自动聊天机器人手机版_Python实现聊天机器人

    一.AIML是什么 AIML全名为Artificial Intelligence Markup Language(人工智能标记语言),是一种创建自然语言软件代理的XML语言,是由RichardS. W ...

  7. python 网络聊天客户端

    # coding=utf-8 "' name:chenyang email: 2898891726@qq.com date : 2018-09-11 class : aid introduc ...

  8. python基于udp的网络聊天室再用tkinter显示_Python实现网络聊天室的示例代码(支持多人聊天与私聊)...

    实验名称: 网络聊天室 功能: i. 掌握利用Socket进行编程的技术 ii. 掌握多线程技术,保证双方可以同时发送 iii. 建立聊天工具 iv. 可以和单人聊天 v. 可以和多个人同时进行聊天 ...

  9. Winsock套接字开发网络聊天室实例(C/S)模式

    聊天室的基本要求 聊天器采用客户端/服务器(C/S)模式: 1,客户端利用UDP与服务器连接,客户端与客户端之间通过UDP互相通讯: 2,服务器端具有服务器端口设置,维护客户端个人信息,记录客户端状态 ...

最新文章

  1. 近段时间佛我就偶尔无
  2. python flask高级编程之restful_('Python Flask高级编程之RESTFul API前后端分离精讲',),全套视频教程学习资料通过百度云网盘下载...
  3. 看完50多家阵亡的初创企业,我们发现了AI创业的5个行业潜规则
  4. 打开正经图片,你可能会看到一张黄图,这种造假方法能同时骗过AI和人眼
  5. Android中如何使用ViewPager实现类似laucher左右拖动效果
  6. 依次输入表(30,15,28,20,24,10,68,35,50)中的元素,生成一棵平衡的二叉排序树。请画出构造过程,并在其中注明每一次平衡化的类型(LL型、RR型、LR型、RL型)
  7. IOS笔记 本地化多语言支持
  8. HackerRank,一行代码解决输出问题
  9. 给html元素绑定单击和双击事件
  10. SDL 从内存流中加载图像并显示
  11. shell for while循环
  12. git 关于Git每次进入都需要输入用户名和密码的问题解决
  13. TXS0108双向电平转换芯片用于IIC时的问题
  14. oracle查询asm的绝对路径,ASMCMD 工具管理ASM目录及文件
  15. Inpaint图片去水印工具
  16. .NET解析BT种子,获取InfoHash
  17. CINTA拉格朗日定理
  18. 如何从型号判断NVR支持的接入路数和硬盘数?
  19. requests发送post请求的一些疑点
  20. alta公司1553b板卡编程相关

热门文章

  1. MySQL 获取系统时间/系统日期/日期时间的函数
  2. dedian系统云服务器,云服务器选择Ubuntu还是Debian镜像系统?根据熟悉度选择
  3. linux 远程备份mysql数据库_使用脚本自动化远程备份MySQL数据库
  4. 【WebRTC---入门篇】(十三)WebRTC音视频数据采集
  5. html双击变成可编辑,jquery 实现双击编辑并保存
  6. python api接口生成_Django 自动生成api接口文档教程
  7. 太阳粒子是什么东西_太阳光子前世今生告诉我们现在享受之阳光是十几万年前诞生的老光...
  8. 傅里叶变换及其应用 pdf_级数的欧拉变换及其应用
  9. 计算机应用基础模拟三答案,《计算机应用基础》模拟试卷三答案
  10. 攻防世界web高手进阶php_rce,php_rce 攻防世界xctf web