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

 更新时间:2018年10月14日 09:23:24   投稿:laozhang  
在本篇文章中我们给大家分享了python中协程实现TCP连接的代码示例内容,有需要的朋友们可以跟着学习下。

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

与单一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一次性下载抖音上音乐

    不知道什么时候开始,中国出现了南抖音、北快手的互文格局。喜欢抖音主要是两个初衷,学做菜听音乐。抖音捧红了很多人,也让很多本不怎么让大家熟知的歌曲、BGM,经过翻唱、混剪与视频搭配,从而传播大街小巷。有没有想过将这些好听的剪辑批量下载下来呢?
    2021-05-05
  • 浅谈Python的list中的选取范围

    浅谈Python的list中的选取范围

    今天小编就为大家分享一篇浅谈Python的list中的选取范围,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-11-11
  • python将list转为matrix的方法

    python将list转为matrix的方法

    今天小编就为大家分享一篇python将list转为matrix的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • python机器学习理论与实战(五)支持向量机

    python机器学习理论与实战(五)支持向量机

    这篇文章主要为大家详细介绍了python机器学习理论与实战第五篇,支持向量机的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01
  • python之拟合的实现

    python之拟合的实现

    这篇文章主要介绍了python之拟合的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • Python中用psycopg2模块操作PostgreSQL方法

    Python中用psycopg2模块操作PostgreSQL方法

    python可以操作多种数据库,本篇文章给大家介绍了用psycopg2模块操作PostgreSQL方法,一起来学习下。
    2017-11-11
  • 将本地Python项目打包成docker镜像上传到服务器并在docker中运行

    将本地Python项目打包成docker镜像上传到服务器并在docker中运行

    Docker是一个开源项目,为开发人员和系统管理员提供了一个开放平台,可以将应用程序构建、打包为一个轻量级容器,并在任何地方运行,这篇文章主要给大家介绍了关于将本地Python项目打包成docker镜像上传到服务器并在docker中运行的相关资料,需要的朋友可以参考下
    2023-12-12
  • Django 解决distinct无法去除重复数据的问题

    Django 解决distinct无法去除重复数据的问题

    这篇文章主要介绍了Django 解决distinct无法去除重复数据的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-05-05
  • 利用python对excel中一列的时间数据更改格式操作

    利用python对excel中一列的时间数据更改格式操作

    这篇文章主要介绍了利用python对excel中一列的时间数据更改格式操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07
  • pygame游戏之旅 调用按钮实现游戏开始功能

    pygame游戏之旅 调用按钮实现游戏开始功能

    这篇文章主要为大家详细介绍了pygame游戏之旅的第12篇,教大家调用按钮实现游戏开始功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-11-11

最新评论