python socket多线程通讯实例分析(聊天室)


Posted in Python onApril 06, 2016

本文实例讲述了python socket多线程通讯方法。分享给大家供大家参考,具体如下:

#!/usr/bin/evn python
"""
这是一个Socket+多进程的例子(聊天服务端)
"""
import socket
import threading
# 处理中文数据用的
encoding = "GBK"
def HKServer(client, addr):
 """
 与客户端时实通讯函数
 加入encoding是为了处理输入中文数据
 client 客户socket
 addr  客户address
 """
 # 通知已有的每个客户,有新的成员加入
 for c in clients: c.send(bytes("[%s]加入\r\n" % addr[1], encoding))
 # 接受客户端数据
 say = b""
 while True:
  data = client.recv(1024)
  if not data: break
  # 如果不是回车键
  if data != b'\r\n':
   say += data #.encode(encoding)
   continue
  # 把客户端发来的内容发给所有的客户端
  for c in clients:
   c.send(bytes("[%s]:%s\r\n" % (addr[1], say.decode(encoding)), encoding))
  # 内容归\x0
  say = b""
 # 客户离开后,从客户列表中移队当前客户,关闭socket连接
 clients.remove(client)
 client.close()
 # 通知已有的每个客户,有成员离开
 for c in clients: c.send(bytes("[%s]离开\r\n" % addr[1], encoding))
# 客户端列表
clients = []
# 设置IP地址与端口
HOST = ''
PORT = 9999
# 初始化socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定IP地址与端口
s.bind((HOST, PORT))
# 开始监听
s.listen(1)
# 循环等待
while True:
 # 接受客户
 client, addr = s.accept()
 # 启动新的进程与客户通信
 thread = threading.Thread(target=HKServer, args=(client, addr))
 thread.start()
 # 记录新的客户
 clients.append(client)

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python基于twisted实现简单的web服务器
Sep 29 Python
Python自动化测试Eclipse+Pydev 搭建开发环境
Aug 15 Python
centos 安装python3.6环境并配置虚拟环境的详细教程
Feb 22 Python
对Tensorflow中权值和feature map的可视化详解
Jun 14 Python
详解Python网络框架Django和Scrapy安装指南
Apr 01 Python
GitHub 热门:Python 算法大全,Star 超过 2 万
Apr 29 Python
利用python numpy+matplotlib绘制股票k线图的方法
Jun 26 Python
Win10 安装PyCharm2019.1.1(图文教程)
Sep 29 Python
使用pyshp包进行shapefile文件修改的例子
Dec 06 Python
python爬虫模拟浏览器访问-User-Agent过程解析
Dec 28 Python
python实现的web监控系统
Apr 27 Python
详解Python中下划线的5种含义
Jul 15 Python
python文件的md5加密方法
Apr 06 #Python
python制作爬虫并将抓取结果保存到excel中
Apr 06 #Python
python基于隐马尔可夫模型实现中文拼音输入
Apr 01 #Python
Python使用BeautifulSoup库解析HTML基本使用教程
Mar 31 #Python
Python使用Mechanize模块编写爬虫的要点解析
Mar 31 #Python
Python语言实现获取主机名根据端口杀死进程
Mar 31 #Python
Linux中Python 环境软件包安装步骤
Mar 31 #Python
You might like
日本收入最高的漫画家:海贼王作者版税年收入高达8.45亿元
2020/03/04 日漫
详解PHP中cookie和session的区别及cookie和session用法小结
2016/06/12 PHP
javascript 屏蔽鼠标键盘的几段代码
2008/01/02 Javascript
JavaScript中的onerror事件概述及使用
2013/04/01 Javascript
jquery实现商品拖动选择效果代码(自写)
2013/05/28 Javascript
javascript获取URL参数与参数值的示例代码
2013/12/20 Javascript
js加密解密字符串可自定义密码因子
2014/05/13 Javascript
JS实现控制表格行内容垂直对齐的方法
2015/03/30 Javascript
AngularJS基础知识笔记之表格
2015/05/10 Javascript
jQuery动画效果图片轮播特效
2016/01/12 Javascript
jQuery简单获取键盘事件的方法
2016/01/22 Javascript
jQuery+ajax简单实现文件上传的方法
2016/06/03 Javascript
vue.js加载新的内容(实例代码)
2017/06/01 Javascript
Vue-Cli中自定义过滤器的实现代码
2017/08/12 Javascript
简单实现js进度条加载效果
2020/03/25 Javascript
Vue组件之极简的地址选择器的实现
2018/05/31 Javascript
[14:56]教你分分钟做大人:巫医
2014/10/30 DOTA
[02:12]2015国际邀请赛 SHOWOPEN
2015/08/05 DOTA
Python实现根据指定端口探测服务器/模块部署的方法
2014/08/25 Python
简单的python后台管理程序
2017/04/13 Python
Python logging管理不同级别log打印和存储实例
2018/01/19 Python
用TensorFlow实现lasso回归和岭回归算法的示例
2018/05/02 Python
Django处理Ajax发送的Get请求代码详解
2019/07/29 Python
Python+AutoIt实现界面工具开发过程详解
2019/08/07 Python
使用keras2.0 将Merge层改为函数式
2020/05/23 Python
python产生模拟数据faker库的使用详解
2020/11/04 Python
python操作toml文件的示例代码
2020/11/27 Python
requests在python中发送请求的实例讲解
2021/02/17 Python
索尼巴西商店:Sony巴西
2019/06/21 全球购物
乐高西班牙官方商店:LEGO Shop ES
2019/12/01 全球购物
银行实习自我鉴定
2013/10/12 职场文书
2014年学习雷锋活动总结
2014/03/01 职场文书
党员廉洁自律个人总结
2015/02/13 职场文书
2016年法制宣传月活动总结
2016/04/01 职场文书
经典励志格言:每日一句,让你每天充满能量
2019/08/16 职场文书
MySQL学习总结-基础架构概述
2021/04/05 MySQL