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读取json文件并将数据插入到mongodb的方法
Mar 23 Python
利用Python如何实现数据驱动的接口自动化测试
May 11 Python
Python实现全排列的打印
Aug 18 Python
python 美化输出信息的实例
Oct 15 Python
在Python中获取两数相除的商和余数方法
Nov 10 Python
python3 selenium自动化 frame表单嵌套的切换方法
Aug 23 Python
python自动保存百度盘资源到百度盘中的实例代码
Aug 26 Python
python之pymysql模块简单应用示例代码
Dec 16 Python
Pytorch 的损失函数Loss function使用详解
Jan 02 Python
如何基于Python爬虫爬取美团酒店信息
Nov 03 Python
python 基于opencv实现图像增强
Dec 23 Python
python周期任务调度工具Schedule使用详解
Nov 23 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为php增加openssl模块的方法
2011/06/14 PHP
php中mail函数发送邮件失败的解决方法
2014/12/24 PHP
使用纯php代码实现页面伪静态的方法
2015/07/25 PHP
全面解析PHP面向对象的三大特征
2017/06/10 PHP
Js数组的操作push,pop,shift,unshift等方法详细介绍
2012/12/28 Javascript
JS获取并操作iframe中元素的方法
2013/03/21 Javascript
加载远程图片时,经常因为缓存而得不到更新的解决方法(分享)
2013/06/26 Javascript
提高NodeJS中SSL服务的性能
2014/07/15 NodeJs
javascript匀速运动实现方法分析
2016/01/08 Javascript
基于JS实现横线提示输入验证码随验证码输入消失(js验证码的实现)
2016/10/27 Javascript
JS中数组重排序方法
2016/11/11 Javascript
JS简单实现获取元素的封装操作示例
2017/04/07 Javascript
JavaScript 函数的定义-调用、注意事项
2017/04/16 Javascript
Vue.js实现微信过渡动画左右切换效果
2017/06/13 Javascript
JavaScrpt中如何使用 cookie 设置查看与删除功能
2017/07/09 Javascript
微信小程序tabBar模板用法实例分析【附demo源码下载】
2017/11/28 Javascript
vue vuex vue-rouert后台项目——权限路由(适合初学)
2017/12/29 Javascript
vue实现图片加载完成前的loading组件方法
2018/02/05 Javascript
获取layer.open弹出层的返回值方法
2018/08/20 Javascript
JavaScript使用indexOf()实现数组去重的方法分析
2018/09/04 Javascript
小程序云开发之用户注册登录
2019/05/18 Javascript
原生js实现贪食蛇小游戏的思路详解
2019/11/26 Javascript
JS document form表单元素操作完整示例
2020/01/13 Javascript
微信小程序 scroll-view的使用案例代码详解
2020/06/11 Javascript
[02:23]2016国际邀请赛中国区预选赛wings晋级之路
2016/06/29 DOTA
Python使用MONGODB入门实例
2015/05/11 Python
python爬取NUS-WIDE数据库图片
2016/10/05 Python
浅谈Python 的枚举 Enum
2017/06/12 Python
python读取ini配置的类封装代码实例
2020/01/08 Python
解决jupyter notebook 出现In[*]的问题
2020/04/13 Python
html5中的一些标签学习(心得)
2016/10/18 HTML / CSS
Linux机考试题
2015/07/17 面试题
羽毛球社团活动总结
2014/06/27 职场文书
群众路线自我剖析材料
2014/10/08 职场文书
鲁冰花观后感
2015/06/10 职场文书
使用Nginx的访问日志统计PV与UV
2022/05/06 Servers