码迷,mamicode.com
首页 > 编程语言 > 详细

gevent 实现单线程下的socket链接

时间:2018-06-11 00:30:03      阅读:217      评论:0      收藏:0      [点我收藏+]

标签:decode   list   并发   ==   NPU   local   gevent   recv   接收   

通过gevent实现socket的多并发

server 端:


import gevent
from gevent import socket, monkey

monkey.patch_all() #进行IO标记

def server(port):
s = socket.socket()
s.bind((‘localhost‘, port))
s.listen()
while True:
conn, addr = s.accept()
gevent.spawn(handle, conn) #一接收信号就进行IO切换

def handle(conn):
try:
data = conn.recv(1024)
print(data)
conn.send(data)
if not data:
conn.shutdown(socket.SHUT_WR) #如果没有数据就关掉socket
except exception as ex:
print(ex)
finally:
conn.close()


if __name__==‘__main__‘:
server(8000)



client 端:

import socket, time

client = socket.socket()
client.connect((‘localhost‘, 6000))
while True:
data = input(‘>>‘)
client.send(data.encode(‘utf-8‘))
if not data:
break

d = client.recv(1024)
print(‘recv:‘, d.decode())










gevent 实现单线程下的socket链接

标签:decode   list   并发   ==   NPU   local   gevent   recv   接收   

原文地址:https://www.cnblogs.com/my-love-is-python/p/9164788.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!