python 网络通讯 服务器端代码demo,能够同时处理多个客户端的连接请求
这是一个python网络通讯服务器端的代码demo,能够同时处理多个客户端的连接请求。
from socket import *
import threading
from datetime import *
import time
import signal server=socket(AF_INET,SOCK_STREAM)
server.setsockopt(SOL_SOCKET,SO_REUSEADDR,1)
server.bind(("",4000))
server.listen(10)
print('waiting to connecting from clients') def client_thread(client_socket,client):
global connect_count
global is_exit
while not is_exit:
data=client_socket.recv(1024) # when return value is b'',the connect with client is close
if data !=b'':
print(str(datetime.now()),' ',client[0],':',data)
client_socket.send(bytes('数据接收成功!', encoding = "utf8") )
if data=="over" or data ==b'':
if mutex_num.acquire(1):
connect_count=connect_count-1
print("client",client[0],"shutdown,current connect count is",connect_count)
mutex_num.release()
client_socket.close()
break def handle(signum, frame):
global is_exit
is_exit = True
print("receive a signal {0},is_exit={1}").format(signum, is_exit) signal.signal(signal.SIGINT, handle)
signal.signal(signal.SIGTERM, handle) mutex_num = threading.Lock() connect_count = 0
max_connect_num = 10
is_exit = False
thread_set = [] while not is_exit:
client_socket, client = server.accept()
if mutex_num.acquire(1):
connect_count = connect_count + 1
print("receive new connect from:", client, "current connect count :", connect_count)
mutex_num.release()
t = threading.Thread(target=client_thread, args=(client_socket, client))
t.setDaemon(True)
t.start()
thread_set.append(t) while (1):
isalive = False
for t in thread_set:
flag = t.is_alive()
isalive = isalive or flag
if not isalive:
break server.close()
python 网络通讯 服务器端代码demo,能够同时处理多个客户端的连接请求的更多相关文章
- python网络数据采集的代码
python网络数据采集的代码 https://github.com/REMitchell/python-scraping
- Python网络编程常用代码
服务器端代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 # -*- coding: cp936 -*- ...
- 《python 网络数据采集》代码更新
<python 网络数据采集>这本书中会出现很多这一段代码: 1 from urllib.request import urlopen 2 from bs4 import Beautifu ...
- MFC socket网络通讯核心代码
服务器: AfxSocketInit();//初始化,必须执行这个函数socket才能正常执行 server.Create(10086); server.Listen(10); while(1) { ...
- Muduo网络库实战(二):实现服务器与客户端的连接
1. 方案的确定 1)基本需求 用户1000+, IO压力不大: 多个客户端打开网站,输入查询字符串strclient,发送给服务器=>服务器接收客户端发过来的数据并处理,将结果返回给客户端: ...
- 第九章:Python の 网络编程基础(一)
本課主題 何为TCP/IP协议 初认识什么是网络编程 网络编程中的 "粘包" 自定义 MySocket 类 本周作业 何为TCP/IP 协议 TCP/IP协议是主机接入互网以及接入 ...
- python网络编程学习笔记(三):socket网络服务器(转载)
1.TCP连接的建立方法 客户端在建立一个TCP连接时一般需要两步,而服务器的这个过程需要四步,具体见下面的比较. 步骤 TCP客户端 TCP服务器 第一步 建立socket对象 建立socket对 ...
- Python网络编程笔记
01. UDP(user datagram protocol)用户数据报协议 01. 特点 01. 无连接 02. 不可靠 03. 每个被传输的数据报必须限定在64KB之内 02. 优点:效率高s 缺 ...
- python网络编程——socket基础篇
python的网络编程比c语言简单许多, 封装许多底层的实现细节, 方便程序员使用的同时, 也使程序员比较难了解一些底层的东西. 1 TCP/IP 要想理解socket,首先得熟悉一下TCP/IP协议 ...
随机推荐
- Electron结合React开发环境遇到的问题
链接 将create-react-app与electron集成在了一个项目中.但是在React中无法使用electron 当在React中使用require('electron')时就会报TypeEr ...
- servlet_获取初始化参数
在web.xml的<servlet>标签中增添 <init-param> <param-name>XXX</param-name> <param- ...
- 备份-泛函编程(23)-泛函数据类型-Monad
泛函编程(23)-泛函数据类型-Monad http://www.cnblogs.com/tiger-xc/p/4461807.html https://blog.csdn.net/samsai100 ...
- logger日志
Level 描述 ALL 各级包括自定义级别 DEBUG 指定细粒度信息事件是最有用的应用程序调试 ERROR 错误事件可能仍然允许应用程序继续运行 FATAL 指定非常严重的错误事件,这可能导致应用 ...
- python迭代器,生成器,推导式
可迭代对象 字面意思分析:可以重复的迭代的实实在在的东西. list,dict(keys(),values(),items()),tuple,str,set,range, 文件句柄(待定) 专业角度: ...
- 【转载】Java IO基础总结
Java中使用IO(输入输出)来读取和写入,读写设备上的数据.硬盘文件.内存.键盘......,根据数据的走向可分为输入流和输出流,这个走向是以内存为基准的,即往内存中读数据是输入流,从内存中往外写是 ...
- 文献阅读 | Benefits and limitations of genome-wide association studies
参考:今日阅读:GWAS的优劣势 - Omics Liu Omics 待续~
- 1016 部分A+B (15 分)
正整数 AAA 的“DAD_ADA(为 1 位整数)部分”定义为由 AAA 中所有 DAD_ADA 组成的新整数 PAP_APA.例如:给定 A=3862767A = 3862767 ...
- 基于Homestead搭建PHP项目开发环境(适合Zend Framework,Laravel,Yii,thinkphp等)
参考: https://framework.zend.com/bl...参考: https://laravel.com/docs/5.5/... 第一步:软件的下载和安装 软件1:VirtualBox ...
- laravel5 文件上传
<!DOCTYPE html><html lang="zh-CN"><head> {{--设置字符编码--}} <meta charset ...