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. 并发编程 - 协程 - 1.协程概念/2.greenlet模块/3.gevent模块/4.gevent实现并发的套接字通信...

    1.协程并发:切+保存状态单线程下实现并发:协程 切+ 保存状态 yield 遇到io切,提高效率 遇到计算切,并没有提高效率 检测单线程下 IO行为 io阻塞 切 相当于骗操作系统 一直处于计算协程 ...

  2. 并发编程知识总结,软件开发架构,socket套接字模板,粘包问题,struct解决粘包问题,上传大文件数据,socketserver,关于操作系统的发展史,进程,线程。...

    并发编程知识总结 软件开发架构 C/S: client:客户端 server:服务端 优点:占用网络资源少,软件的使用稳定 缺点:服务端更新后,客户端也要更新,需要使用多个软件,需要下载多个客户端 B ...

  3. 从Nginx绑定80端口学套接字编程

    <UNIX网络编程(卷1):套接字联网API(第3版)> ngx_connection.c ngx_int_t ngx_open_listening_sockets(ngx_cycle_t ...

  4. java udp乱码_【Java】Java UDP 套接字编程乱码问题

    零.发现问题 用Java写了个UDP收发程序,发现中文有问题! package socket; import java.io.IOException; import java.net.Datagram ...

  5. java 套接字关联的通道_Java 通道教程 – NIO 2.0

    # Java 通道教程 – NIO 2.0 > 原文: [https://howtodoinjava.com/java7/nio/java-nio-2-0-channels/](https:// ...

  6. 网络协议OSI、TCP/IP协议、Socket套接字和第三方AsyncSock的使用等解析

    一.网络协议定义 1.OSI参考模型:全称(Open System Interconnection), 开放式系统互联参考模型.是一个逻辑上的定义,一个规范,它把网络协议从逻辑上分为七层,只要目的是为 ...

  7. Linux之socket套接字编程20160704

    介绍套接字之前,我们先看一下传输层的协议TCP与UDP: TCP协议与UDP协议的区别 首先咱们弄清楚,TCP协议和UCP协议与TCP/IP协议的联系,很多人犯糊涂了,一直都是说TCP/IP协议与UD ...

  8. day7 面向对象进阶、socket套接字

    文章目录 1. 静态方法.类方法 1.1 静态方法 1.2 类方法 2. 属性方法 3. 类的一些成员方法 4. 反射 5. 异常处理 6. socket 套接字 1. 静态方法.类方法 1.1 静态 ...

  9. Python开发基础总结之套接字+字符串+正则表达式

    一.套接字编程: 函数的功能基本和c类似,唯一不同的地方在于当发生错误时,它不是通过返回值来告知的,而是通过触发异常,所以udp中的bind, recvfrom, sendto必须要进行捕捉异常. 套 ...

  10. linux获取fifo中的数据数量,Linux select()和多个套接字的FIFO排序?

    您可以使用IP_PKTINFO将数据包被发送到组播组的地址 - 即使套接字认购一堆组播组.完成此操作后,您将按顺序获取数据包并按组地址进行过滤.看下面的例子: #include #include #i ...

最新文章

  1. 解释一下SQLSERVER事务日志记录
  2. 备份----硬盘对拷
  3. 【新星计划】MATLAB系统辨识工具箱使用方法
  4. Go 语言web 框架 Gin 练习5
  5. Exp2 后门原理与实践 20164309
  6. 【转载】使用 gnuplot 在网页中显示数据
  7. Running /usr/bin/wineserver -w. This will hang until all wine processes XXXX terminate
  8. 将CRgn rgn对象以图片形式输出便于查看
  9. XiaoKL学Python(C)__future__
  10. 智慧交通day04-特定目标车辆追踪03:siamese在目标跟踪中的应用-SiamMask(2019)
  11. Linux IPC实践(9) --System V共享内存
  12. file_get_contents js没有渲染数据_浏览器渲染页面那些事
  13. 静态页面 调用php数据,静态html页面如何更新点击数
  14. ectouch手机商城首页调用指定分类下的商品
  15. 推荐几个代码自动生成器,神器!!!
  16. 终极算法——第五章:进化学派:自然的学习算法
  17. mysql权限管理命令小结
  18. Excel学习笔记:P27-我的表格有重复内容该怎么办?简单三招让它们现出原形
  19. 【OCR】中文街景数据集、场景文本定位识别新网络:End2End-PSL
  20. slab为什么要进行染色处理

热门文章

  1. 深度 | 机器学习敲门砖:任何人都能看懂的TensorFlow介绍【转】
  2. Spinner的简单实用
  3. python写的监视bt.ktxp.com的rss的小脚本 updated
  4. Android 网络学习之获取服务器的图片
  5. 关于might_sleep的一点说明
  6. VPP 命令总结(持续更新)
  7. Linux 2.6 中的页面回收与反向映射
  8. android opengl 图像同步fence创建
  9. SylixOS 内存管理源代码分析--phyPage.c
  10. 第十届中软杯(A2行人追踪)!!!