socker server和 event

socker server和 event今日内容 1 基于 TCP 的 socketserver 基于 UDP 的 socketserver event 一 TCP 的 socketserver 服务器 importsocket thread forklinux 下一个多进程接口 windows 没有这接口 用于处理请求的类

今日内容

1.基于TCP的socketserver

2.基于UDP的socketserver

3.event

一.TCP的socketserver

#服务器 import socketserver from threading import current_thread # fork linux下一个多进程接口 windows没有这接口 # 用于处理请求的类 class MyHandler(socketserver.BaseRequestHandler): def handle(self): print(self) print(self.server) # 获取封装的服务器对象 print(self.client_address)# 客户端地址 print(self.request)# 获取客户端的socket对象 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",9999),MyHandler) server.serve_forever() 
#客户端

import socket




 

 

二.基于UDP的socketserver

# 服务器 import socketserver from threading import current_thread # fork linux下一个多进程接口 windows没有这接口 # 用于处理请求的类 class MyHandler(socketserver.BaseRequestHandler): def handle(self): print(self) print(self.server) # 获取封装的服务器对象 print(self.client_address)# 客户端地址 print(self.request)# 是一个元祖 包含收到的数据 和服务器端的socket # data,client = self.request  data = self.request[0] print(data.decode("utf-8")) self.request[1].sendto(b"i am server",self.client_address) server = socketserver.ThreadingUDPServer(("127.0.0.1",9999),MyHandler) server.serve_forever() # ThreadingUDPServer 在初始化的时候创建了socket对象 # serve_forever() 将sockt注册到select(多路复用的) # select中返回一个ready 如果为True则可以处理 _handle_request_noblock 内部创建了一个MyHandler的示例 调用了handler函数 # 使用了socket OOP 多线程 # 正常开发中 如果并发量不大 就是用socketserver # 否则用协程 """ 使用时的区别: ThreadingTCPServer handler 在连接成功时执行 self.request 是客户端的socket对象 ThreadingUDPServer handler 接收到数据时执行 self.request 数据和服务器端的socket对象 """ # 客户端 import socket c = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) addr = ("127.0.0.1",9999) while True: msg = input(">>>:") c.sendto(msg.encode("utf-8"),addr) print(c.recvfrom(1024)[0].decode("utf-8"))

三.Event

是否启动完成就是要通讯的内容

“””

# import time # from threading import Thread # boot = False # def server_task(): # global boot # print("正在启动....") # time.sleep(5) # print("启动....成功") # boot = True # # def client_task(): # while True: # print("连接服务器....") # time.sleep(1) # if boot: # print("连接成功") # break # else: # print("error 连接失败 服务器未启动!!") # # t1 = Thread(target=server_task) # t1.start() # # t2 = Thread(target=client_task) # t2.start() # # t1.join() # t2.join() # 使用事件实现 import time from threading import Thread,Event event =Event() def server_task(): print("正在启动....") time.sleep(5) print("启动....成功") event.set() def client_task(): event.wait() #一个阻塞的函数 会阻塞直到对event执行set函数为止 print("连接成功!") t1 = Thread(target=server_task) t1.start() t2 = Thread(target=client_task) t2.start()

 

转载于:https://www.cnblogs.com/gongcheng-/p/9971476.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/232533.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • qt服务器主动断开tcp连接_qtcpsocket 多线程

    qt服务器主动断开tcp连接_qtcpsocket 多线程简述对于一个C/S结构的程序,客户端有些时候需要实时得知与服务器的连接状态。而对于客户端与服务器断开连接的因素很多,现在就目前遇到的情况进行一下总结。分为下面六种不同情况客户端网线断开客户端网络断开客户端通过HTTP代理连接服务器,代理机器断开代理客户端通过HTTP代理连接服务器,代理机器的网络断开客户端通过HTTP代理连接服务器,代理机器的网线断开服务器断开同时对于以上六种情况又分为连接服务器之…

    2025年10月12日
    3
  • tcp三次握手的seq和ack_tcp三次握手的第一个报文

    tcp三次握手的seq和ack_tcp三次握手的第一个报文TCP(TransmissionControlProtocol)传输控制协议TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接:位码即tcp标志位,有6种标示:SYN(synchronous建立联机)ACK(acknowledgement确认)PSH(push传送)FIN(finish结束)RST(reset重置)URG(urgent紧急)Sequ…

    2022年9月27日
    3
  • cache与虚拟存储的异同点_多级cache

    cache与虚拟存储的异同点_多级cache1. cache是指(高速缓冲存储器)。2.计算机系统的三级存储器结构指的是(高速缓冲存储器)、(主存储器)、(辅助存储器)3. 在多级存储体系中,cache的主要功能是(提高存储速度),虚拟存储器的主要功能是(扩大存储容量)。4. 计算机系统对存储器的要求是(容量大)、(速度快)、(成本低)。为了解决这三个方面的矛盾,计算机采用多级存储器体系结构

    2022年9月26日
    3
  • Google Doodle:龙年 新春快乐 龙年进步!

    Google Doodle:龙年 新春快乐 龙年进步!看过春晚,放过×××,Google终于在北京时间1月23日的凌晨放出了龙年的Doodle: 转载于:https://blog.51cto.com/maclean/1278817

    2022年7月26日
    3
  • clion 2022.01.13激活码【中文破解版】「建议收藏」

    (clion 2022.01.13激活码)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~0HKLM1UCCY-eyJsaWNlbnNlSWQiOi…

    2022年3月31日
    164
  • int什么数据类型_int16是什么数据类型

    int什么数据类型_int16是什么数据类型int16,int32,int64等类型的区别Int16意思是16位整数(16bitinteger),相当于short占2个字节。Int32意思是32位整数(32bitinteger),相当于int占4个字节。Int64意思是64位整数(64bitinterger),相当于longlong占8个字节。…

    2022年8月15日
    8

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号