zoukankan      html  css  js  c++  java
  • socketserver及相关的类 (处理socket服务端)+ event事件的使用

    编写简单的套接字服务器并不难,然而,如果要创建的并非简单服务器,还要求助于服务器模块。

    模块SocketServer是标准库提供的服务器框架的基石,这个框架包括好多服务器,他们基本服务器的基础上添加了各种功能。

    SocketServer包含4个基本的服务器:TCPServer(支持TCP套接字流),UDPServer(支持udp数据报套接字)...

    服务端代码

    # import socketserver
    #
    # from threading import current_thread
    #
    # class MyHandler(socketserver.BaseRequestHandler):
    # def handle(self):
    # print(self.server)
    # print(self.client_address)
    # print(self.request)
    # print(current_thread())
    #
    # while True:
    # data = self.request.recv(1024)
    # print(data.decode('utf-8'))
    # self.request.send(data.upper())
    #
    #
    # server = socketserver.ThreadingTCPServer(('127.0.0.1',8090),MyHandler)
    # server.serve_forever()

    客户端代码

    from socket import *

    client = socket(AF_INET,SOCK_STREAM)

    client.connect(('127.0.0.1',8090))

    while True:
    msg = input('>>: ').strip()
    client.send(msg.encode('utf-8'))

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

    ------------------------------分割线-------------------------------------------------------------

    # 事件是什么?
    # 某件事情发生的信号

    # 用来干什么?
    # 在线程问间通讯,然而线程本来就能通讯
    # 作用只有一个就是简化代码

    # event 线程通讯,仅仅用于简化代码,说的就是代替一个bool类型和一个if判断
    from threading import Thread,Event
    # set() 将状态修改为True
    # wait()等待转态为True才继续执行


    import time

    event = Event()

    def server_task():

    print('正在启动')
    time.sleep(4)
    print('启动成功等待连接')
    event.set()


    def client_task():
    event.wait()
    print('连接成功')


    t1 = Thread(target=server_task)
    t1.start()

    t2 = Thread(target=client_task)
    t2.start()

    t1.join()
    t2.join()
  • 相关阅读:
    mapreduce 函数入门 三
    *hiho 1475
    hiho 1571
    hiho 1620
    hiho 1613
    centos下nginx配置
    hiho 1617
    hiho 172周
    uva 11584
    hiho1605
  • 原文地址:https://www.cnblogs.com/zhangrenguo/p/9963071.html
Copyright © 2011-2022 走看看