python中协程实现TCP连接的实例分析


Posted in Python onOctober 14, 2018

在网络通信中,每个连接都必须创建新线程(或进程) 来处理,否则,单线程在处理连接的过程中, 无法接受其他客户端的连接。所以我们尝试使用协程来实现服务器对多个客户端的响应。

与单一TCP通信的构架一样,只是使用协程来实现多个任务同时进行。

#服务端

import socket

from gevent import monkey

import gevent

monkey.patch_all()

def handle_conn(seObj):

  while True:

    re_Data = seObj.recv(1024).decode('utf-8')

    if re_Data == 'quit':

      break

    print('client>>',re_Data)

    value = input("server>>")

    se_Data = seObj.send(value.encode('utf-8'))

    if se_Data == 'quit':

      break

if __name__ == '__main__':

  server = socket.socket()

  server.bind(('192.168.1.227',9876))

  print("服务已开启")

  server.listen(4)

  while True:

    seObj,add = server.accept()

    gevent.spawn(handle_conn,seObj)

  seObj.close()

  server.close()
import socket

 

# 1. 创建客户端的socket对象

client = socket.socket()

# 2. 连接服务端, 需要指定端口和IP

client.connect(('192.168.1.227',9876))

while True:

  # 3. 给服务端发送数据

  send_data = input("client:>")

  client.send(send_data.encode('utf-8'))

  if send_data == 'quit':

    break

  # 4. 获取服务端返回的消息

  recv_data = client.recv(1024).decode('utf-8')

  if recv_data == 'quit':

    break

  print("server:>%s" %(recv_data))

# 5. 关闭socket连接

client.close()

以上就是python中协程实现TCP连接的代码示例的详细内容,感谢大家对三水点靠木的支持。

Python 相关文章推荐
详解Python中的正则表达式
Jul 08 Python
对python:循环定义多个变量的实例详解
Jan 20 Python
Django restframework 源码分析之认证详解
Feb 22 Python
Python中将两个或多个list合成一个list的方法小结
May 12 Python
django框架使用orm实现批量更新数据的方法
Jun 21 Python
python pip源配置,pip配置文件存放位置的方法
Jul 12 Python
Python图像处理PIL各模块详细介绍(推荐)
Jul 17 Python
Python scipy的二维图像卷积运算与图像模糊处理操作示例
Sep 06 Python
Python高级编程之消息队列(Queue)与进程池(Pool)实例详解
Nov 01 Python
Python 脚本的三种执行方式小结
Dec 21 Python
python opencv圆、椭圆与任意多边形的绘制实例详解
Feb 06 Python
如何用python清洗文件中的数据
Jun 18 Python
解决python "No module named pip" 的问题
Oct 13 #Python
pycharm运行出现ImportError:No module named的解决方法
Oct 13 #Python
python机器学习之神经网络实现
Oct 13 #Python
Python pyinotify模块实现对文档的实时监控功能方法
Oct 13 #Python
基于pycharm导入模块显示不存在的解决方法
Oct 13 #Python
解决PyCharm import torch包失败的问题
Oct 13 #Python
python3+requests接口自动化session操作方法
Oct 13 #Python
You might like
php中的时间显示
2007/01/18 PHP
IP138 IP地址查询小偷实现代码
2010/02/15 PHP
PHP计划任务、定时执行任务的实现代码
2011/04/23 PHP
PHP实现把数字ID转字母ID
2013/08/12 PHP
让codeigniter与swfupload整合的最佳解决方案
2014/06/12 PHP
php实现简单的上传进度条
2015/11/17 PHP
PHP+原生态ajax实现的省市联动功能详解
2017/08/15 PHP
JavaScript脚本性能的优化方法
2007/02/02 Javascript
javascript 面向对象全新理练之原型继承
2009/12/03 Javascript
网页右下角弹出窗体实现代码
2014/06/05 Javascript
在浏览器中实现图片粘贴的jQuery插件-- pasteimg使用指南
2014/12/29 Javascript
vue-router启用history模式下的开发及非根目录部署方法
2018/12/23 Javascript
jQuery实现小火箭返回顶部特效
2020/02/03 jQuery
Vue v-for中的 input 或 select的值发生改变时触发事件操作
2020/08/31 Javascript
vue elementui tree 任意级别拖拽功能代码
2020/08/31 Javascript
Vue自定义组件双向绑定实现原理及方法详解
2020/09/03 Javascript
[56:35]DOTA2上海特级锦标赛C组小组赛#1 OG VS Archon第二局
2016/02/27 DOTA
[01:12:44]VG vs Mineski Supermajor 败者组 BO3 第二场 6.6
2018/06/07 DOTA
python利用正则表达式提取字符串
2016/12/08 Python
Python实现邮件的批量发送的示例代码
2018/01/23 Python
详解django中url路由配置及渲染方式
2019/02/25 Python
Python API自动化框架总结
2019/11/12 Python
Pandas-Cookbook 时间戳处理方式
2019/12/07 Python
flask框架自定义url转换器操作详解
2020/01/25 Python
Python过滤序列元素的方法
2020/07/31 Python
Python面向对象多态实现原理及代码实例
2020/09/16 Python
详解canvas drawImage()方法绘制图片不显示的问题
2018/10/08 HTML / CSS
澳大利亚UGG工厂直销:Australian Ugg Boots
2017/10/14 全球购物
台湾租车首选品牌:IWS艾维士租车
2019/05/03 全球购物
摄影实习自我鉴定
2013/09/20 职场文书
关于毕业的中学校园广播稿
2014/01/26 职场文书
安全协议书范本
2014/04/21 职场文书
保证书范文大全
2014/04/28 职场文书
体育节口号
2014/06/19 职场文书
明星邀请函
2015/02/02 职场文书
总结Python常用的魔法方法
2021/05/25 Python