python3实现多线程聊天室


Posted in Python onDecember 12, 2018

使用python3创建多线程聊天室,供大家参考,具体内容如下

import threading 
import socket
 
#socket
udpSocket = None
#计数器
num = 1
 
#1.创建接受,发送方法
def inMessage():
  global num
  while True:
    #等待接收消息
    data = udpSocket.recvfrom(1024)
    #4. 将接收到的数据再发送给对方
    udpSocket.sendto(data[0], data[1])
    #打印获得的消息
    print("\r>> 消息%d => 来自:%s => %s"%(num,data[1],data[0].decode('gb2312')))
    print('\r>>',end='')
    #消息数量+1
    num+=1
 
def outMessage():
  while True:
    #发送地址
    sendAddr = ('192.168.106.132',8080)
    #获得输入数据
    senddata = input('\r>>')
    #发送消息
    udpSocket.sendto(senddata.encode('gb2312'),sendAddr)
 
 
#2.使用多线程执行接收发送
def main():
  global udpSocket
  
  #创建socket
  udpSocket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
  #绑定端口
  udpSocket.bind(('',8686))
 
  #创建线程
  t1 = threading.Thread(target=inMessage)
  t2 = threading.Thread(target=outMessage)
 
  #启动线程
  t1.start()
  t2.start()
 
  #主线程堵塞
  t1.join()
  t2.join()
 
#3.主方法运行
if __name__ == "__main__":
  main()

效果图:

python3实现多线程聊天室

python3实现多线程聊天室

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python处理文本文件实现生成指定格式文件的方法
Jul 31 Python
Python中的with...as用法介绍
May 28 Python
Python守护进程用法实例分析
Jun 04 Python
python re模块findall()函数实例解析
Jan 19 Python
python如何实现代码检查
Jun 28 Python
对Python中画图时候的线类型详解
Jul 07 Python
python selenium循环登陆网站的实现
Nov 04 Python
pytorch实现seq2seq时对loss进行mask的方式
Feb 18 Python
python GUI库图形界面开发之PyQt5布局控件QGridLayout详细使用方法与实例
Mar 06 Python
浅析Python __name__ 是什么
Jul 07 Python
如何在Python项目中引入日志
May 31 Python
python状态机transitions库详解
Jun 02 Python
对pandas读取中文unicode的csv和添加行标题的方法详解
Dec 12 #Python
python pands实现execl转csv 并修改csv指定列的方法
Dec 12 #Python
python2.7实现邮件发送功能
Dec 12 #Python
对python csv模块配置分隔符和引用符详解
Dec 12 #Python
pandas读取csv文件,分隔符参数sep的实例
Dec 12 #Python
python使用xlsxwriter实现有向无环图到Excel的转换
Dec 12 #Python
解决Python pandas plot输出图形中显示中文乱码问题
Dec 12 #Python
You might like
php中记录用户访问过的产品,在cookie记录产品id,id取得产品信息
2011/05/04 PHP
PHP生成验证码时“图像因其本身有错无法显示”的解决方法
2013/08/07 PHP
PHPThumb图片处理实例
2014/05/03 PHP
避免Smarty与CSS语法冲突的方法
2015/03/02 PHP
Thinkphp 空操作、空控制器、命名空间(详解)
2017/05/05 PHP
php5对象复制、clone、浅复制与深复制实例详解
2019/08/14 PHP
用jQuery扩展自写的 UI导航
2010/01/13 Javascript
node.js中的fs.rmdir方法使用说明
2014/12/16 Javascript
JavaScript中利用Array和Object实现Map的方法
2015/07/27 Javascript
实例详解JSON数据格式及json格式数据域字符串相互转换
2016/01/07 Javascript
Bootstrap CSS布局之图像
2016/12/17 Javascript
浅谈 vue 中的 watcher
2017/12/04 Javascript
Koa2微信公众号开发之消息管理
2018/05/16 Javascript
JavaScript 链表定义与使用方法示例
2020/04/28 Javascript
JavaScript实现前端倒计时效果
2021/02/09 Javascript
Python2.5/2.6实用教程 入门基础篇
2009/11/29 Python
Python实现拼接多张图片的方法
2014/12/01 Python
python中的装饰器详解
2015/04/13 Python
探究Python的Tornado框架对子域名和泛域名的支持
2015/05/02 Python
django加载本地html的方法
2018/05/27 Python
Python中的字符串切片(截取字符串)的详解
2019/05/15 Python
Python求两点之间的直线距离(2种实现方法)
2019/07/07 Python
PYQT5 vscode联合操作qtdesigner的方法
2020/03/24 Python
Carter’s官方旗舰店:美国受欢迎的婴童服装品牌
2018/01/21 全球购物
英国标志性生活方式品牌:Skinnydip London
2019/12/15 全球购物
Clos19英国:高档香槟、葡萄酒和烈酒在线购物平台
2020/07/10 全球购物
技校教师求职简历的自我评价
2013/10/20 职场文书
大学生村官承诺书
2014/03/28 职场文书
2014年企业党支部工作总结
2014/12/04 职场文书
三八红旗手事迹材料
2014/12/26 职场文书
中秋联欢会主持词
2015/07/04 职场文书
学校趣味运动会开幕词
2016/03/04 职场文书
2019企业文化管理制度范本!
2019/08/06 职场文书
Filebeat 采集 Nginx 日志的方法
2021/03/31 Servers
Vue CLI中模式与环境变量的深入详解
2021/05/30 Vue.js
SQLyog的下载、安装、破解、配置教程(MySQL可视化工具安装)
2022/09/23 MySQL