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解决了,程序效率就相当牛逼了

最新文章

  1. dsp28377控制DM9000收发数据
  2. 双系统下(Ubuntu + win7)windows 无法连接无线网络
  3. git 的简单使用方法
  4. html之cellspacing && cellpadding讲解
  5. 完全跨站点跨域名单点(SSO)同步登录和注销
  6. Walking Ant(bfs)
  7. pygame系列_小球完全弹性碰撞游戏
  8. WinForm 基础
  9. 【转】简单模拟angular的依赖注入
  10. HTTPS和TCP协议三次握手设计
  11. 从0开始的Python学习012数据结构&对象与类
  12. Storage 001 电商数据库设计
  13. vue基于webpack说明
  14. Web从入门到放弃<7>
  15. Linux 学习笔记之超详细基础linux命令 Part 1
  16. Servlet中forward和redirect的区别
  17. kafka生产者和消费者
  18. CSS3新特性2D、3D效果讲解
  19. STS 控制台 中文乱码(maven 中文乱码)
  20. JavaScript stringObject.replace() 方法

热门文章

  1. "下载"文件夹的desktop.ini
  2. poj3181 背包+大数
  3. Codeforces Round #394 (Div. 2) A. Dasha and Stairs
  4. HDU 1410 PK武林盟主
  5. Android onTouchEvent和setOnTouchListener中onTouch的区别
  6. [转]优化Flash性能
  7. 卷积神经网络实战-----0001(移植卷积神经网络c++ to python or java)
  8. 获取mac地址方法之一 GetAdaptersInfo()
  9. mysql-jdbc创建Statement与执行SQL
  10. NOIP模拟题 膜法