gevent实现套接字
server-------------
#!/usr/bin/env python
# encoding: utf-8
# Date: 2018/6/17
from gevent import monkey,spawn;monkey.patch_all()
from socket import *
# 负责通信
def communicate(conn):
while True:
try:
data = conn.recv(1024)
if not data: break
conn.send(data.upper())
except ConnectionResetError:
break
conn.close()
# 建立链接
def server(ip, port):
server = socket(AF_INET, SOCK_STREAM)
server.bind((ip, port))
server.listen(5)
while True:
conn, addr = server.accept()
spawn(communicate, conn) # 启动协程,这里不需要join,因为这里提交完,线程不会结束
server.close()
if __name__ == '__main__':
g = spawn(server, '127.0.0.1', 8080)
g.join()
client------------
#!/usr/bin/env python
# encoding: utf-8
# Date: 2018/6/17
# 客户端可以启动多个进程,启动一个就是一个进程
from socket import *
from threading import Thread,currentThread
def client():
client = socket(AF_INET, SOCK_STREAM)
client.connect(('127.0.0.1', 8080))
while True:
client.send(('% s hello' % currentThread().getName()).encode('utf-8'))
data = client.recv(1024)
print(data.decode('utf-8'))
if __name__ == '__main__':
for i in range(500):
t = Thread(target=client)
t.start()
# 目前,服务端一个线程,可以抗住客户端500线程并发,
# 如果再加上多进程,每个进程再开多个线程,每个线程再基于gevent模块把io解决了,程序效率就相当牛逼了
转载于:https://www.cnblogs.com/fmgao-technology/p/9201318.html
gevent实现套接字相关推荐
- 并发编程 - 协程 - 1.协程概念/2.greenlet模块/3.gevent模块/4.gevent实现并发的套接字通信...
1.协程并发:切+保存状态单线程下实现并发:协程 切+ 保存状态 yield 遇到io切,提高效率 遇到计算切,并没有提高效率 检测单线程下 IO行为 io阻塞 切 相当于骗操作系统 一直处于计算协程 ...
- 并发编程知识总结,软件开发架构,socket套接字模板,粘包问题,struct解决粘包问题,上传大文件数据,socketserver,关于操作系统的发展史,进程,线程。...
并发编程知识总结 软件开发架构 C/S: client:客户端 server:服务端 优点:占用网络资源少,软件的使用稳定 缺点:服务端更新后,客户端也要更新,需要使用多个软件,需要下载多个客户端 B ...
- 从Nginx绑定80端口学套接字编程
<UNIX网络编程(卷1):套接字联网API(第3版)> ngx_connection.c ngx_int_t ngx_open_listening_sockets(ngx_cycle_t ...
- java udp乱码_【Java】Java UDP 套接字编程乱码问题
零.发现问题 用Java写了个UDP收发程序,发现中文有问题! package socket; import java.io.IOException; import java.net.Datagram ...
- java 套接字关联的通道_Java 通道教程 – NIO 2.0
# Java 通道教程 – NIO 2.0 > 原文: [https://howtodoinjava.com/java7/nio/java-nio-2-0-channels/](https:// ...
- 网络协议OSI、TCP/IP协议、Socket套接字和第三方AsyncSock的使用等解析
一.网络协议定义 1.OSI参考模型:全称(Open System Interconnection), 开放式系统互联参考模型.是一个逻辑上的定义,一个规范,它把网络协议从逻辑上分为七层,只要目的是为 ...
- Linux之socket套接字编程20160704
介绍套接字之前,我们先看一下传输层的协议TCP与UDP: TCP协议与UDP协议的区别 首先咱们弄清楚,TCP协议和UCP协议与TCP/IP协议的联系,很多人犯糊涂了,一直都是说TCP/IP协议与UD ...
- day7 面向对象进阶、socket套接字
文章目录 1. 静态方法.类方法 1.1 静态方法 1.2 类方法 2. 属性方法 3. 类的一些成员方法 4. 反射 5. 异常处理 6. socket 套接字 1. 静态方法.类方法 1.1 静态 ...
- Python开发基础总结之套接字+字符串+正则表达式
一.套接字编程: 函数的功能基本和c类似,唯一不同的地方在于当发生错误时,它不是通过返回值来告知的,而是通过触发异常,所以udp中的bind, recvfrom, sendto必须要进行捕捉异常. 套 ...
- linux获取fifo中的数据数量,Linux select()和多个套接字的FIFO排序?
您可以使用IP_PKTINFO将数据包被发送到组播组的地址 - 即使套接字认购一堆组播组.完成此操作后,您将按顺序获取数据包并按组地址进行过滤.看下面的例子: #include #include #i ...
最新文章
- 解释一下SQLSERVER事务日志记录
- 备份----硬盘对拷
- 【新星计划】MATLAB系统辨识工具箱使用方法
- Go 语言web 框架 Gin 练习5
- Exp2 后门原理与实践 20164309
- 【转载】使用 gnuplot 在网页中显示数据
- Running /usr/bin/wineserver -w. This will hang until all wine processes XXXX terminate
- 将CRgn rgn对象以图片形式输出便于查看
- XiaoKL学Python(C)__future__
- 智慧交通day04-特定目标车辆追踪03:siamese在目标跟踪中的应用-SiamMask(2019)
- Linux IPC实践(9) --System V共享内存
- file_get_contents js没有渲染数据_浏览器渲染页面那些事
- 静态页面 调用php数据,静态html页面如何更新点击数
- ectouch手机商城首页调用指定分类下的商品
- 推荐几个代码自动生成器,神器!!!
- 终极算法——第五章:进化学派:自然的学习算法
- mysql权限管理命令小结
- Excel学习笔记:P27-我的表格有重复内容该怎么办?简单三招让它们现出原形
- 【OCR】中文街景数据集、场景文本定位识别新网络:End2End-PSL
- slab为什么要进行染色处理