如果需要向所有客户端发送消息,则需要以某种方式保存所有客户端的集合。例如:clients = set()

clients_lock = threading.Lock()

def listener(client, address):

print "Accepted connection from: ", address

with clients_lock:

clients.add(client)

try:

while True:

data = client.recv(1024)

if not data:

break

else:

print repr(data)

with clients_lock:

for c in clients:

c.sendall(data)

finally:

with clients_lock:

clients.remove(client)

client.close()

将其中的一部分分解成单独的函数可能会更清楚,比如一个完成所有发送的broadcast函数。

无论如何,这是最简单的方法,但也有问题:如果一个客户机的连接速度很慢,那么其他所有人都可能无法向其写入数据。当他们在轮到他们写的时候,他们没有读任何东西,所以你可以溢出缓冲区并开始断开所有人的连接。

如果一个客户机有错误,其线程正在写入该客户机的客户机可能会收到异常,这意味着您最终将断开与错误用户的连接。

因此,一个更好的解决方案是给每个客户机一个队列,以及一个服务于该队列的writer线程和reader线程。(然后,你可以通过各种方式扩展这个功能,限制排队,这样人们就不会再试图与落后太远的人交谈,等等。)

正如Anzel所指出的,除了为每个客户机使用一个(或两个)线程之外,还有一种不同的服务器设计方法:使用reactor多路复用所有客户机事件。

Python 3.x内置了一些很棒的库,但是2.7只有笨重过时的^{}/^{}和低级的^{}。

正如Anzel所说,Python SocketServer: sending to multiple clients有一个使用asyncore的答案,值得一读。但我不会真的用这个。如果你想用Python 2.x编写一个基于reactor的服务器,我要么使用一个更好的第三方框架,比如Twisted,要么找到或编写一个直接位于select上的非常简单的框架。

服务器发消息给所有人,我需要服务器向所有客户端(Python、sockets)发送消息...相关推荐

  1. 使用python+微信发送消息提醒,实现程序监控

    使用python+微信发送消息提醒,实现程序监控 使用python+微信可以非常方便的提醒自己运行的程序是否报错,监控程序运行状态 1.申请微信测试号 https://mp.weixin.qq.com ...

  2. chatgpt赋能python:Python如何发送消息到微信群?一步步教你实现

    Python如何发送消息到微信群?一步步教你实现 在生活和工作中,我们用微信的频率越来越高,微信群也成了我们工作和社交中不可或缺的一部分.那么如何用Python来实现消息的自动发送到微信群呢?本文就为 ...

  3. 查看当前服务器中的所有的topic,创建topic,删除topic,通过shell命令发送消息,通过shell消费消息,查看topic详情,对分区数进行修改

    一. Kafka常用操作命令  查看当前服务器中的所有topic [root@hadoop3 kafka]# bin/kafka-topics.sh --list --zookeeper hadoo ...

  4. python微信发送消息过于频繁_微信发送信息频率上限?

    请问有人知道微信发送信息频率上限是多少吗? 自己的机器人碰到的问题... 希望大家可以来帮助讨论下 先谢过啦 简单介绍下背景: 功能上基本上就是群发,且群发的信息对不同人是不一样的. 然后希望能够越准 ...

  5. 【Python定时发送消息到微信】

    前言 哔咘:"你看下明天天气呢?我好准备明天穿的衣服鞋子." 叭卟没做回应,心想怎么又问啊,自己不知道看吗. 哔咘一个温柔的眼神,叭卟立刻回答道:"要得,天气预报马上看. ...

  6. python 定时发送消息给微信好友

    1.爬取爱情的文艺句子 import requests from lxml import etree import redef save_file(love_sentences):with open( ...

  7. 【kafka连载四】window系统python环境发送消息和消费消息

    前提 1.已安装kafka-python模块 2.已启动zookeeper服务 3.已启动kafka服务 一.编辑发送消息code #coding=utf-8from kafka import Kaf ...

  8. Socket(套字节)编程,客户端 服务器端的发送消息

    一.服务器端口 服务器端代码: 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using Sys ...

  9. 写一个python定时发送消息的脚本——每天跟你女盆友说晚安

    首先 你要有个女朋友 效果 需要安装几个包 pip install wxpy pip install wechat_sender pip install requests 代码如下 from __fu ...

最新文章

  1. 感觉 Mongodb 的操作 还没 mysql 方便 。。。。
  2. XILINX资源获取
  3. docker电子书_果然!这10个Docker容器坑多数人都中招过
  4. 她,既是一个风华绝代的演员,更是WiFi之母...
  5. PHP+Mysql+jQuery实现发布微博程序(PHP篇)
  6. 后续:安装ORK功能包踩坑之路和解决方案
  7. 广数系统加工中心编程_CNC加工中心编程加工的一些小技巧,学会必有用
  8. mpu6050惯性导航学习记录
  9. Eat,PrayLove--结婚3周年
  10. win10网络适配器不见了_Win10网络适配器消失不见了怎么办?,爱纯净官网
  11. MySQL常见错误:Starting MySQL...The server quit without updating PID file (/usr/local/mysql/data/localhos
  12. 美股分时交易数据 API 接口
  13. 放弃Dubbo了,不太适合小系统
  14. opencv各lib库的功能
  15. css3实现字体从左到右渐变(原理与思路)
  16. 防火墙对FTP主动和被动模式的影响
  17. Day1学firefly学到python
  18. 小学信息技术用计算机画画说课,小学信息技术说课稿三篇
  19. 个人日记—《日俄战争》的故事—20200802
  20. Visual Geometry Group 资源(vgg)

热门文章

  1. linux主题文件,美化你的Linux!23个精美Ubuntu主题下载
  2. 如何生成java_如何生成JavaAPI doc
  3. 51单片机除法c语言,求一个 89C51 简易计算器的c语言程序 只要加减乘除就行!
  4. 根据title 关闭cmd 窗口_2种Win7关闭休眠功能方法
  5. (填坑:SQL打印两次)mybatisplus+p6spy 日志打印
  6. Linux之scp命令实现远程服务器的文件拷贝
  7. 多租户系统技术实现mysql_SaaS “可配置”和“多租户”架构的几种技术实现方式...
  8. oracle 查重复_日常答疑|MySQL删除重复数据踩过得坑
  9. git 创建新分支,合并分支等问题
  10. 解释上采样和PixelShuffle