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 with语句上下文管理器两种实现方法分析
Feb 09 Python
Jupyter notebook远程访问服务器的方法
May 24 Python
python 提取key 为中文的json 串方法
Dec 31 Python
浅谈Python 列表字典赋值的陷阱
Jan 20 Python
python实现公司年会抽奖程序
Jan 22 Python
numpy.where() 用法详解
May 27 Python
python输出电脑上所有的串口名的方法
Jul 02 Python
如何查看Django ORM执行的SQL语句的实现
Apr 20 Python
Python基于yaml文件配置logging日志过程解析
Jun 23 Python
2020年10款优秀的Python第三方库,看看有你中意的吗?
Jan 12 Python
python基于Kivy写一个图形桌面时钟程序
Jan 28 Python
详解Python+OpenCV绘制灰度直方图
Mar 22 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 数组基础知识小结
2010/08/20 PHP
php天翼开放平台短信发送接口实现方法
2014/12/22 PHP
PHPExcel内存泄漏问题解决方法
2015/01/23 PHP
深入理解php printf() 输出格式化的字符串
2016/05/23 PHP
Laravel如何友好的修改.env配置文件详解
2017/06/07 PHP
PHP通过curl获取接口URL的数据方法
2018/05/31 PHP
defer属性导致引用JQuery的页面报“浏览器无法打开网站xxx,操作被中止”错误的解决方法
2010/04/27 Javascript
使用Javascript接收get传递的值的代码
2011/11/30 Javascript
20条学习javascript的编程规范的建议
2014/11/28 Javascript
JavaScript函数参数使用带参数名的方式赋值传入的方法
2015/03/19 Javascript
js实现精美的图片跟随鼠标效果实例
2015/05/16 Javascript
jquery 将当前时间转换成yyyymmdd格式的实现方法
2016/06/01 Javascript
Javascript之Math对象详解
2016/06/07 Javascript
AngularJS实现动态编译添加到dom中的方法
2016/11/04 Javascript
js窗口震动小程序分享
2016/11/28 Javascript
详解Nodejs之npm&package.json
2017/06/15 NodeJs
vue组件Prop传递数据的实现示例
2017/08/17 Javascript
微信网页授权并获取用户信息的方法
2018/07/30 Javascript
JavaScript实现JSON合并操作示例【递归深度合并】
2018/09/07 Javascript
js实现下拉框二级联动
2018/12/04 Javascript
Python+Turtle动态绘制一棵树实例分享
2018/01/16 Python
Python使用pip安装报错:is not a supported wheel on this platform的解决方法
2018/01/23 Python
Python+selenium 获取一组元素属性值的实例
2018/06/22 Python
Windows下python3.6.4安装教程
2018/07/31 Python
python+opencv实现高斯平滑滤波
2020/07/21 Python
python实现FTP文件传输的方法(服务器端和客户端)
2020/03/20 Python
Django多数据库配置及逆向生成model教程
2020/03/28 Python
Python虚拟环境的创建和使用详解
2020/09/07 Python
Linux系统下升级pip的完整步骤
2021/01/31 Python
Trench London官方网站:高级风衣和意大利皮夹克
2020/07/11 全球购物
公司大门门卫岗位职责
2014/06/11 职场文书
校园会短篇的广播稿
2014/10/21 职场文书
javascript函数式编程基础
2021/09/15 Javascript
Python学习之异常中的finally使用详解
2022/03/16 Python
Go语言的协程上下文的几个方法和用法
2022/04/11 Golang
Mybatis 一级缓存和二级缓存原理区别
2022/09/23 Java/Android