资讯专栏INFORMATION COLUMN

python大佬养成计划--协程实现TCP连接

fuchenxuan / 1695人阅读

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

协程实现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()

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/42611.html

相关文章

  • python大佬养成计划----协程

    摘要:协程,又称微线程,纤程。最大的优势就是协程极高的执行效率。生产者产出第条数据返回更新值更新消费者正在调用第条数据查看当前进行的线程函数中有,返回值为生成器库实现协程通过提供了对协程的基本支持,但是不完全。 协程,又称微线程,纤程。英文名Coroutine协程看上去也是子程序,但执行过程中,在子程序内部可中断,然后转而执行别的子程序,在适当的时候再返回来接着执行。 最大的优势就是协程极高...

    svtter 评论0 收藏0
  • python大佬养成计划----socket实现TCP通信

    摘要:我们来编写一个简单的服务器程序,它接收客户端连接,回复客户端发来的请求。如果一切顺利,新浪的服务器接受了我们的连接,一个连接就建立起来的,后面的通信就是发送网页内容了。 TCP TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。在简化的计算机网络OSI模型中,它完成第四...

    layman 评论0 收藏0
  • python大佬养成计划----socket实现UDP通信

    摘要:是建立可靠连接,并且通信双方都可以以流的形式发送数据。相对,则是面向无连接的协议。测试结果用两个命令行分别启动服务器和客户端测试开启服务端完成一次通信 UDP TCP是建立可靠连接, 并且通信双方都可以以流的形式发送数据。 相对TCP, UDP则是面向无连接的协议。使用UDP协议时, 不需要建立连接, 只需要知道对方的IP地址和端口号, 就可以直接发数据包。 但是, 能不能到达就不知道...

    Juven 评论0 收藏0
  • python大佬养成计划----socket网络编程

    摘要:一个包来了之后,到底是交给浏览器还是,就需要端口号来区分。每个网络程序都向操作系统申请唯一的端口号,这样,两个进程在两台计算机之间建立网络连接就需要各自的地址和各自的端口号。 网络通信的三要素 IP 通信的时候, 双方必须知道对方的标识, 好比发邮件必须知道对方的邮件地址。 互联网上每个计算机的唯一标识就是IP地址, 类似 123.123.123.123 。 IP地址实际上是一个32位...

    phodal 评论0 收藏0
  • python大佬养成计划----HTML网页设计(表单)

    摘要:数据传输方式输入类控件表单元素也称表单控件,按照填写方式分为输入类和下拉菜单类。按钮的名字按钮上显示的文本重置菜单列表控件下拉菜单可以节省页面空间。是单标签,用来定义下拉菜单中的选项。表示初始被选中的选项。 当用户熟悉了静态网页制作后就能感受到它的功能单一,会想建立具有交互性的动态网站。动态网站经常用到的一个元素就是表单。表单是HTML的一个重要组成部分,是网站管理员与用户之间沟通的桥...

    nevermind 评论0 收藏0

发表评论

0条评论

fuchenxuan

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<