python socket多线程通讯实例分析(聊天室)
作者:火星大熊猫 发布时间:2022-11-21 13:18:58
标签:python,socket,多线程
本文实例讲述了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程序设计有所帮助。


猜你喜欢
- XMLHttpRequest是一个浏览器接口,使得Javascript可以进行HTTP(S)通信。最早,微软在IE 5引进了这个接口。因为它
- Python的Collections模块提供了不少好用的数据容器类型,其中一个精品当属namedtuple。namedtuple能够用来创建
- *注意:本文的内容涉及到修改NTFS磁盘权限和设置安全策略,请务必在确认您了解操作可能的后果之后再动手进行任何的修改。文中提及的权限都是在原
- 1.init 函数简介Golang init 函数是一种特殊的函数,主要用于完成程序的初始化工作,如初始化数据库的连接、载入本地配置文件、根
- 网上的很多PHP微信支付接入教程都颇为复杂,且需要配置和引入较多的文件,本人通过整理后给出一个单文件版的,希望可以给各位想接入微信支付的带来
- 在二维卷积函数tf.nn.conv2d(),最大池化函数tf.nn.max_pool(),平均池化函数tf.nn.avg_pool()中,卷
- 本文实例讲述了Python实现删除列表中满足一定条件的元素。分享给大家供大家参考,具体如下:从列表中删除满足一定条件的元素。如:删除一个列表
- 记录训练过程中的每一步的loss变化 if verbose and step % verbose == 0: sys.stdout.writ
- 在Windows下使用VSCode编译运行,都出现中文乱码的问题,今天我就遇见了这种情况,上网搜了半天也没有找到正确的解决方法,现将我把我的
- 1 简介关键词抽取就是从文本里面把跟这篇文档意义最相关的一些词抽取出来。这个可以追溯到文献检索初期,当时还不支持全文搜索的时候,关键词就可以
- 一、导出数据库用mysqldump命令(注意mysql的安装路径,即此命令的路径):1、导出数据和表结构:mysqldump -u用户名 -
- 本文实例为大家分享了微信小程序翻牌小功能,供大家参考,具体内容如下页面<view id="container"&g
- 如何验证IP地址?sub chkIP(boardid) dim rsIP dim ipAr
- 求:机房、线上有多台主机,为了保障安全,需要定期修改密码。若手动修改,费时费力易出错。程序应该满足如下需求 :1、在现有的excel密码表格
- 翻译说明:这是Solid State Group网站上的一篇很友好的文章,解决了我在设计中遇到的很多问题,故在此我翻译其文,并对原作者表示非
- 以下代码实现了ip查询功能处理程序 import os,timedef getip(filepath):
- 前言:牛奶冻曲线(blancmange curve),因在1901年由高木贞治所研究,又称高木曲线。在单位区间内,牛奶冻函数定义为:分形曲线
- 前言SQL模式影响MySQL支持的SQL语法和执行的数据验证检查。MySQL服务器可以在不同的SQL模式下运行,并且可以针对不同的客户端以不
- 项目开发中,前端在配置后端api域名时很困扰,常常出现:本地开发环境: api-dev.demo.com测试环境: api-test.dem
- 本文实例讲述了Python中list以及list与array的相互转换实现方法。分享给大家供大家参考,具体如下:python中的list是一