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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • webpack css_webpack打包有哪些文件

    webpack css_webpack打包有哪些文件css文件处理-准备工作(以下项目配置都是基于上一篇webpack(4)的基础上)在项目开发中,我们必然需要添加很多的样式,而样式我们往往写到一个单独的文件中。这里我们就在src目录中创建一个n

    2022年7月30日
    5
  • 博客背景颜色怎么改_皮肤图片

    博客背景颜色怎么改_皮肤图片步骤:管理博客–>博客设置–>鼠标箭头移至当前模板–>鼠标右键–>检查–>找到checked=“checked”readonly将这段代码剪切后–>粘贴

    2022年10月9日
    3
  • 华为OJ:2041 放苹果

    华为OJ:2041 放苹果

    2022年1月31日
    59
  • 不止一个背包的背包问题_背包问题 java

    不止一个背包的背包问题_背包问题 java有 N 个物品和一个容量是 V 的背包。物品之间具有依赖关系,且依赖关系组成一棵树的形状。如果选择一个物品,则必须选择它的父节点。如下图所示:如果选择物品5,则必须选择物品1和2。这是因为2是5的父节点,1是2的父节点。每件物品的编号是 i,体积是 vi,价值是 wi,依赖的父节点编号是 pi。物品的下标范围是 1…N。求解将哪些物品装入背包,可使物品总体积不超过背包容量,且总价值最大。输出最大价值。输入格式第一行有两个整数 N,V,用空格隔开,分别表示物品个数和背包容量。接下来有 N

    2022年8月9日
    4
  • MIUI刷Android原生,小米手机怎么刷安卓原生系统

    MIUI刷Android原生,小米手机怎么刷安卓原生系统小米手机自带的系统很好,但是很多人还是希望用安卓的原生系统,小米手机是支持刷机成为安卓原生系统的。那么小米手机怎么刷安卓原生系统呢?今天学习啦小编与大家分享下小米手机刷安卓原生系统的具体操作步骤,有需要的朋友不妨了解下。小米手机刷安卓原生系统方法下载工具包和线刷完整包,下载完成后解压,刷机工具点击下载MIUI最新版线刷Fastboot开发版完整包点击下载。(请检查文件后缀名是否为”.tgz”,如…

    2022年6月19日
    121
  • js split 用法「建议收藏」

    js split 用法「建议收藏」split使用方法

    2025年5月30日
    7

发表回复

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

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