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检测远程udp端口是否打开的方法
Mar 14 Python
python分析网页上所有超链接的方法
May 08 Python
Python网络爬虫神器PyQuery的基本使用教程
Feb 03 Python
Python Web程序部署到Ubuntu服务器上的方法
Feb 22 Python
Python实现字符串的逆序 C++字符串逆序算法
May 28 Python
django框架事务处理小结【ORM 事务及raw sql,customize sql 事务处理】
Jun 27 Python
Python实现银行账户资金交易管理系统
Jan 03 Python
Python输出指定字符串的方法
Feb 06 Python
Python使用requests xpath 并开启多线程爬取西刺代理ip实例
Mar 06 Python
Django admin管理工具TabularInline类用法详解
May 14 Python
Python基于staticmethod装饰器标示静态方法
Oct 17 Python
Python 全局空间和局部空间
Apr 06 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
mysql From_unixtime及UNIX_TIMESTAMP及DATE_FORMAT日期函数
2010/03/21 PHP
php通用防注入程序 推荐
2011/02/26 PHP
PHP base64编码后解码乱码的解决办法
2014/06/19 PHP
ThinkPHP中limit()使用方法详解
2016/04/19 PHP
PHP基于迭代实现文件夹复制、删除、查看大小等操作的方法
2017/08/11 PHP
ExtJS Store的数据访问与更新问题
2010/04/28 Javascript
Bootstrap和Java分页实例第一篇
2016/12/23 Javascript
js学习总结之dom2级事件基础知识详解
2017/07/27 Javascript
vue2.0移除或更改的一些东西(移除index key)
2017/08/28 Javascript
Vue不能观察到数组length的变化
2018/06/08 Javascript
Vue实现textarea固定输入行数与添加下划线样式的思路详解
2018/06/28 Javascript
trackingjs+websocket+百度人脸识别API实现人脸签到
2018/11/26 Javascript
微信小程序位置授权处理方法
2019/06/13 Javascript
swiper自定义分页器的样式
2020/09/14 Javascript
Vue实现Header渐隐渐现效果的实例代码
2020/11/05 Javascript
python实现获取序列中最小的几个元素
2014/09/25 Python
用TensorFlow实现多类支持向量机的示例代码
2018/04/28 Python
Python查看微信撤回消息代码
2018/06/07 Python
python操作excel的方法(xlsxwriter包的使用)
2018/06/11 Python
pytorch 自定义数据集加载方法
2019/08/18 Python
详解利用python识别图片中的条码(pyzbar)及条码图片矫正和增强
2020/11/17 Python
BONIA官方网站:国际奢侈品牌和皮革专家
2016/11/27 全球购物
香港最大的洋酒零售连锁店:屈臣氏酒窖(Watson’s Wine)
2018/12/10 全球购物
俄罗斯马克西多姆家居用品网上商店:Максидом
2020/02/06 全球购物
ASP.NET中的身份验证有那些
2012/07/13 面试题
法律专业实习鉴定
2013/12/22 职场文书
卫生安全检查制度
2014/02/04 职场文书
员工安全承诺书
2014/05/22 职场文书
本科生自荐信
2014/06/18 职场文书
小学中等生评语
2014/12/29 职场文书
有关西游记的读书笔记
2015/06/25 职场文书
小学英语教师研修感悟
2015/11/18 职场文书
2016十一国庆节感言
2015/12/09 职场文书
HTML5来实现本地文件读取和写入的实现方法
2021/05/25 HTML / CSS
MySQL索引失效的典型案例
2021/06/05 MySQL
redis客户端实现高可用读写分离的方式详解
2021/07/04 Redis