废话不多说,直接贴代码,有详细注释,

一方面供别人参考,

另一方便于自己查阅。

#!/usr/bin/env python3
# -*- coding: utf-8 -*-# @File  : socketserver2.py
# @Author: 彭先森
# @Date  : 2018/8/29
# @Desc  :import socket
import select# 创建一个类
class ChatServer:# 初始化 传入监听端口即可def __init__(self, port):self.port = port# 配置参数self.srvsock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)self.srvsock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)self.srvsock.bind(("", port))self.srvsock.listen(10)  # 设置监听数量# 添加在线服务器self.descripors = [self.srvsock]print("Server started!")# 运行监听方法def run(self):while True:# 获取 新的连接申请(sread, swrite, sexc) = select.select(self.descripors, [], [])# 读 以获取到的申请for sock in sread:# 判断是否有新的连接if sock == self.srvsock:self.accept_new_connection()else:# 读接收到的消息str_send = sock.recv(1024).decode('gbk')   # 读缓冲区大小1024  # 检测是否断开连接host, port = sock.getpeername()if str_send == '':str_send = 'Client left %s:%s\r\n' % (host, port)self.broadcast_str(str_send, sock)sock.closeself.descripors.remove(sock)else:newstr = '[%s:%s] %s' % (host, port, str_send)self.broadcast_str(newstr, sock)# 建立一个新的连接客户机def accept_new_connection(self):# 接收请求newsock, (remhost, remport) = self.srvsock.accept()# 添加连接self.descripors.append(newsock)newsock.send("You are Connected\r\n".encode('utf8'))str_send = 'Client joined %s:%s' % (remhost, remport)self.broadcast_str(str_send, newsock)# 广播函数def broadcast_str(self, str_send, my_sock):# 遍历已有连接for sock in self.descripors:if sock != self.srvsock and sock != my_sock:sock.send(str_send.encode('utf8'))print("转发内容:"+str_send+"        --- 发送成功!")# 实例化监听服务器
ChatServer(1010).run()

python3 socket TCP 服务器 一对多转发信息相关推荐

  1. 趣学python3(40)--TCP服务器和客户端(socketserver类)

    #!/usr/bin/env python3import socket import sysHOST="localhost" PORT=21200 ADDR=(HOST,PORT) ...

  2. java socket 循环读取_java socket tcp(服务器循环检测)

    刚才看了下以前写了的代码,tcp通信,发现太简单了,直接又摘抄了一个,运行 博客:http://blog.csdn.net/zhy_cheng/article/details/7819659 优点是服 ...

  3. python socket tcp客户端_python网络编程socketserver模块(实现TCP客户端/服务器)

    摘录python核心编程 socketserver(python3.x版本重新命名)是标准库中的网络编程的高级模块.通过将创建网络客户端和服务器所必须的代码封装起来,简化了模板,为你提供了各种各样的类 ...

  4. asp.core api 通过socket和服务器通信发送udp_【网络通信】TCP的通信过程

    本文主要介绍以下几个内容: 1.TCP.UDP.Socket分别是什么?有什么区别? 2.TCP的基本过程. 3.TCP三次握手建立连接. 4.TCP四次挥手断开连接. 5.常考查其他问题. 1.TC ...

  5. python应用系列教程——python使用socket创建tcp服务器和客户端

    全栈工程师开发手册 (作者:栾鹏) python教程全解 python使用socket创建tcp服务器和客户端. 服务器端为一个时间戳服务器,在接收到客户端发来的数据后,自动回复. 客户端,等待用户输 ...

  6. TCP服务器和客户端的创建(socket/socketserver)

    1 本文记录针对python网络编程学习过程中的socket部分进行记录与总结,内容仅仅涉及最粗浅的部分,日后或许会进行更新与扩展. 2 本文涉及的socket数据传输均使用bytes类型,因此在py ...

  7. tcp 服务器响应端口,TCP/HTTP连接/Socket/端口

    一.TCP连接与端口 web服务器只开启了一个端口,他是如何为多用户服务的? 问题描述 不同主机之间通讯,必须依赖套接字,而端口号是套接字的标识(开始是这样认为的),那么假设web服务器进程,开启了8 ...

  8. asp.core api 通过socket和服务器通信发送udp_python socket之TCP/UDP

    #coding=utf-8 # socket #网络中进程之间通信:网络层的"ip地址"可以唯一标识网络中的主机,而传输层的"协议+端口"可以唯一标识主机中的应 ...

  9. Linux网络编程 | Socket编程(二)TCPSocket的封装、TCP服务器多进程、多线程版本的实现

    目录 TCP的通信流程 TCPSocket的封装 TCP客户端 TCP服务器 多进程版本 多线程版本 TCP的通信流程 计算机网络 (三) 传输层 :一文搞懂UDP与TCP协议 在这篇博客中,我描述了 ...

  10. Socket之TCP服务器【Python】

    下面是其他相关的终端的创建: Socket之TCP客户端[Python] Socket之UDP服务器[Python] Socket之UDP客户端[Python] 创建TCP服务器 首先,我们先创建一段 ...

最新文章

  1. 红芯丑闻揭秘者 Touko 专访 | 关于红芯丑闻的更多内幕……
  2. Spring boot国际化切换
  3. linux下Eclipse+CDT开发环境配置与使用
  4. Java中删除文件、删除目录及目录下所有文件
  5. 古风登陆html,再祭古风扬 文/凌霄一羽
  6. AsyncHttpClient的连接池使用逻辑
  7. 观察者模式(Head First设计模式学习2)
  8. python展开list嵌套,并解决from compiler.ast import flatten报错ModuleNotFoundError: No module named ‘compiler‘
  9. stm32时钟配置总结
  10. 文件对比工具比较会话时查看字节地址的方法
  11. Linux下安装搜狗拼音输入法(Ubuntu18.04.2 LTS)
  12. Python量化数据获取:总资产同比增长率与净资产同比增长率
  13. 使用OpenResty达到十万级并发超高性能Web应用(一):HelloWorld
  14. githug通关部分黏贴(git代码练习)
  15. JavaScript数组属性和方法
  16. 大陆证券(期货)交易所手续费计算方式详解
  17. 快速搭建小程序,实现线上引流获客
  18. Handlebars 介绍
  19. 网络爬虫 | selenium 爬取动态加载信息
  20. iPhone自动旋转控制代码-IOS开发

热门文章

  1. Hadoop-day07(MapReduce三个小案例)
  2. 力扣周赛 第281场 Java题解
  3. linux vi文件提示swp,如何解决非正常关闭vi编辑器时生成.swp文件问题
  4. systemverilog : constraint slove... before 详解
  5. Hazelcast Jet DAG原理
  6. 3600S软件测试工资,软件测试工资能拿到多少?谁说软件测试收入低?
  7. 电脑虚拟服务器云主机运维论坛,虚拟服务器云主机论坛
  8. os系统服务器防火墙怎么关闭,mac防火墙如何关闭
  9. Failed to read artifact descriptor for
  10. 《3D打印:正在到来的工业革命(第2版)》——2.4节粉末床熔融