并发服务器模型——多线程服务器
多线程服务器
#coding=utf-8
from socket import *
from threading import Thread
from time import sleep# 处理客户端的请求并执行事情
def dealWithClient(newSocket,destAddr):while True:recvData = newSocket.recv(1024)if len(recvData)>0:print('recv[%s]:%s'%(str(destAddr), recvData))else:print('[%s]客户端已经关闭'%str(destAddr))breaknewSocket.close()def main():serSocket = socket(AF_INET, SOCK_STREAM)serSocket.setsockopt(SOL_SOCKET, SO_REUSEADDR , 1)localAddr = ('', 7788)serSocket.bind(localAddr)serSocket.listen(5)try:while True:print('-----主进程,,等待新客户端的到来------')newSocket,destAddr = serSocket.accept()print('-----主进程,,接下来创建一个新的进程负责数据处理[%s]-----'%str(destAddr))client = Thread(target=dealWithClient, args=(newSocket,destAddr))client.start()#因为线程中共享这个套接字,如果关闭了会导致这个套接字不可用,#但是此时在线程中这个套接字可能还在收数据,因此不能关闭#newSocket.close() finally:serSocket.close()if __name__ == '__main__':main()
并发服务器模型——多线程服务器相关推荐
- 并发服务器模型——多进程服务器
多进程服务器 1. 多进程服务器 from socket import * from multiprocessing import * from time import sleep# 处理客户端的请求 ...
- 并发服务器模型——单进程服务器
单进程服务器 1. 完成一个简单的TCP服务器 from socket import *serSocket = socket(AF_INET, SOCK_STREAM)# 重复使用绑定的信息 serS ...
- 循环服务器,并发服务器模型以及I/O多路转接模型
https://blog.csdn.net/xinianbuxiu/article/details/53455784 一.基于TCP/IP协议的基本循环服务器 tcp_server.c #includ ...
- qt多线程服务器_常见网络服务器并发模型
点击蓝字 关注我们 近些年,随着互联网的大发展,高并发服务器技术也快速进步,从简单的循环服务器模型处理少量网络并发请求,演进到解决C10K,C10M问题的高并发服务器模型.本文主要以TCP为例,总结了 ...
- 回调函数 线程_从0实现基于Linux socket聊天室-多线程服务器一个很隐晦的错误-2...
根据 <0 基于socket和pthread实现多线程服务器模型>所述,server创建子线程的时候用的是以下代码: pconnsocke = (int *) malloc(sizeof( ...
- 基于事件的 NIO 多线程服务器--转载
JDK1.4 的 NIO 有效解决了原有流式 IO 存在的线程开销的问题,在 NIO 中使用多线程,主要目的已不是为了应对每个客户端请求而分配独立的服务线程,而是通过多线程充分使用用多个 CPU 的处 ...
- 基于多进程和基于多线程服务器的优缺点及nginx服务器的启动过程
基于多进程服务器的优点: 1.由操作系统进行调度,运行比较稳定强壮 2.能够方便地通过操作系统进行监控和管理 例如对每个进程的内存变化状况,甚至某个进程处理什么web请求进行监控.同时可以通过给进程发 ...
- 基于事件的 NIO 多线程服务器
2019独角兽企业重金招聘Python工程师标准>>> JDK1.4 的 NIO 有效解决了原有流式 IO 存在的线程开销的问题,在 NIO 中使用多线程,主要目的已不是为了应对每个 ...
- muduo网络库:09---多线程服务器之(单线程、多线程服务器的适用场合)
本文内容衔接于前一篇文章(进程间通信只用TCP):https://blog.csdn.net/qq_41453285/article/details/104997453 一.服务器开发概述 " ...
最新文章
- linux unset命令,Linux unset命令
- 实战 | 多种方法实现以图搜图
- android h5输入框被键盘遮挡,APP调用H5开发页面,输入框被软键盘遮挡问题的解决方案...
- 初中计算机知识点 考题,初中信息技术考题规律及趋势_教师资格面试初中信息技术...
- 看看 JDK 8 给我们带来什么
- 一定要会的synchronized关键字的用法
- mysql 优化设计库_MySQL 数据库最优化设计原则
- Swift开发:NSLayoutConstraint纯代码实现自动布局-初级篇
- 如何基于阿里云搭建适合初创企业的轻量级架构?
- 阿里云上遇到: virtual memory exhausted: Cannot allocate memory
- 2019年Java Web学习笔记目录
- 持续集成部署Jenkins工作笔记0017---17.整合GitHub的持续集成环境要点说明
- android取消内存限制吗,Android 内存限制
- Java实现简易四则运算器
- SVN汉化失败的原因及解决方案(通过SVN官网下载SVN和相应的汉化包)
- 安装VMware时,出现 安装程序无法继续 Microsoft Runtime DLL 安装程序未能完成安装 您无权输入许可证密钥,请使用系统管理员账户重试 VMware15.5.x 安装问题处理
- abb机器人goto指令用法_abb机器人编程指令,机器人编程的程序指令
- 最新电影《D战》幕后真实案件:暗夜黑客组织被端
- 移动硬盘遇到无法访问,参数错误的处理方法
- iOS 相册备份功能实现