电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Python Socket多線程并發原理及實現

瀏覽:115日期:2022-07-02 14:20:06
1.SocketServer模塊編寫的TCP服務器端代碼

 Socketserver原理圖

Python Socket多線程并發原理及實現

服務端:

import SocketServer #導入SocketServer,多線程并發由此類實現 class MySockServer(SocketServer.BaseRequestHandler): #定義一個類 def handle(self): #handle(self)方法是必須要定義的,可以看上面的說明 print ’Got a new connection from’, self.client_address while True: data = self.request.recv(1024) #需要通過self的方法調用數據接收函數 if not data:break print ’recv:’, data self.request.send(data.upper()) #需要通過self的方法調用數據接收函數 if __name__ == ’__main__’: #并非一定要用這樣的方式,只是建議這樣使用 HOST = ’’ #定義偵聽本地地址口(多個IP地址情況下),這里表示偵聽所有 PORT = 50007 #Server端開放的服務端口 s = SocketServer.ThreadingTCPServer((HOST, PORT), MySockServer) #調用SocketServer模塊的多線程并發函數 s.serve_forever() #持續接受客戶端的連接

客戶端:

import socket HOST = ’192.168.1.13’PORT = 50007s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)s.connect((HOST, PORT)) while True: user_input = raw_input(’msg to send:’).strip() s.sendall(user_input) data = s.recv(1024) print ’Received’, repr(data) s.close() 2.基于Python Socketserver的實現的FTP程序

 服務端:

import socketserverimport structimport jsonimport osclass FtpServer(socketserver.BaseRequestHandler): coding=’utf-8’ server_dir=’file_upload’ max_packet_size=1024 BASE_DIR=os.path.dirname(os.path.abspath(__file__)) def handle(self): print(self.request) while True: data=self.request.recv(4) data_len=struct.unpack(’i’,data)[0] head_json=self.request.recv(data_len).decode(self.coding) head_dic=json.loads(head_json) # print(head_dic) cmd=head_dic[’cmd’] if hasattr(self,cmd):func=getattr(self,cmd)func(head_dic) def put(self,args): file_path = os.path.normpath(os.path.join( self.BASE_DIR, self.server_dir, args[’filename’] )) filesize = args[’filesize’] recv_size = 0 print(’----->’, file_path) with open(file_path, ’wb’) as f: while recv_size < filesize:recv_data = self.request.recv(self.max_packet_size)f.write(recv_data)recv_size += len(recv_data)print(’recvsize:%s filesize:%s’ % (recv_size, filesize))ftpserver=socketserver.ThreadingTCPServer((’127.0.0.1’,8080),FtpServer)ftpserver.serve_forever()

 客戶端:

import socketimport structimport jsonimport osclass MYTCPClient: address_family = socket.AF_INET socket_type = socket.SOCK_STREAM allow_reuse_address = False max_packet_size = 8192 coding=’utf-8’ request_queue_size = 5 def __init__(self, server_address, connect=True): self.server_address=server_address self.socket = socket.socket(self.address_family, self.socket_type) if connect: try:self.client_connect() except:self.client_close()raise def client_connect(self): self.socket.connect(self.server_address) def client_close(self): self.socket.close() def run(self): while True: inp=input('>>: ').strip() if not inp:continue l=inp.split() cmd=l[0] if hasattr(self,cmd):func=getattr(self,cmd)func(l) def put(self,args): cmd=args[0] filename=args[1] if not os.path.isfile(filename): print(’file:%s is not exists’ %filename) return else: filesize=os.path.getsize(filename) head_dic={’cmd’:cmd,’filename’:os.path.basename(filename),’filesize’:filesize} print(head_dic) head_json=json.dumps(head_dic) head_json_bytes=bytes(head_json,encoding=self.coding) head_struct=struct.pack(’i’,len(head_json_bytes)) self.socket.send(head_struct) self.socket.send(head_json_bytes) send_size=0 with open(filename,’rb’) as f: for line in f:self.socket.send(line)send_size+=len(line)print(send_size) else:print(’upload successful’)client=MYTCPClient((’127.0.0.1’,8080))client.run()

以上就是Python Socket多線程并發原理及實現的詳細內容,更多關于Python Socket多線程并發的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: Eiafans.com_环评爱好者 环评网|环评论坛|环评报告公示网|竣工环保验收公示网|环保验收报告公示网|环保自主验收公示|环评公示网|环保公示网|注册环评工程师|环境影响评价|环评师|规划环评|环评报告|环评考试网|环评论坛 - Powered by Discuz! | 挤出熔体泵_高温熔体泵_熔体出料泵_郑州海科熔体泵有限公司 | 美能达分光测色仪_爱色丽分光测色仪-苏州方特电子科技有限公司 | 威海防火彩钢板,威海岩棉复合板,威海彩钢瓦-文登区九龙岩棉复合板厂 | 盐城网络公司_盐城网站优化_盐城网站建设_盐城市启晨网络科技有限公司 | 外贮压-柜式-悬挂式-七氟丙烷-灭火器-灭火系统-药剂-价格-厂家-IG541-混合气体-贮压-非贮压-超细干粉-自动-灭火装置-气体灭火设备-探火管灭火厂家-东莞汇建消防科技有限公司 | 净化车间_洁净厂房_净化公司_净化厂房_无尘室工程_洁净工程装修|改造|施工-深圳净化公司 | 制氮设备_PSA制氮机_激光切割制氮机_氮气机生产厂家-苏州西斯气体设备有限公司 | 胶泥瓷砖胶,轻质粉刷石膏,嵌缝石膏厂家,腻子粉批发,永康家德兴,永康市家德兴建材厂 | 金属管浮子流量计_金属转子流量计厂家-淮安润中仪表科技有限公司 | 房在线-免费房产管理系统软件-二手房中介房屋房源管理系统软件 | 通辽信息港 - 免费发布房产、招聘、求职、二手、商铺等信息 www.tlxxg.net | 北京西风东韵品牌与包装设计公司,创造视觉销售力! | 武汉天安盾电子设备有限公司 - 安盾安检,武汉安检门,武汉安检机,武汉金属探测器,武汉测温安检门,武汉X光行李安检机,武汉防爆罐,武汉车底安全检查,武汉液体探测仪,武汉安检防爆设备 | 高低温试验房-深圳高低温湿热箱-小型高低温冲击试验箱-爱佩试验设备 | 山东齐鲁漆业有限公司【官网】-工业漆专业生产厂家 | 英思科GTD-3000EX(美国英思科气体检测仪MX4MX6)百科-北京嘉华众信科技有限公司 | 集装箱标准养护室-集装箱移动式养护室-广州璟业试验仪器有限公司 | 欧美日韩国产一区二区三区不_久久久久国产精品无码不卡_亚洲欧洲美洲无码精品AV_精品一区美女视频_日韩黄色性爱一级视频_日本五十路人妻斩_国产99视频免费精品是看4_亚洲中文字幕无码一二三四区_国产小萍萍挤奶喷奶水_亚洲另类精品无码在线一区 | 档案密集架,移动密集架,手摇式密集架,吉林档案密集架-厂家直销★价格公道★质量保证 | 丹佛斯压力传感器,WISE温度传感器,WISE压力开关,丹佛斯温度开关-上海力笙工业设备有限公司 | 酒店品牌设计-酒店vi设计-酒店标识设计【国际级】VI策划公司 | 广州活动策划公司-15+年专业大型公关活动策划执行管理经验-睿阳广告 | 进口便携式天平,外校_十万分之一分析天平,奥豪斯工业台秤,V2000防水秤-重庆珂偌德科技有限公司(www.crdkj.com) | 无菌水质袋-NASCO食品无菌袋-Whirl-Pak无菌采样袋-深圳市慧普德贸易有限公司 | 并网柜,汇流箱,电控设备,中高低压开关柜,电气电力成套设备,PLC控制设备订制厂家,江苏昌伟业新能源科技有限公司 | 实验室pH计|电导率仪|溶解氧测定仪|离子浓度计|多参数水质分析仪|pH电极-上海般特仪器有限公司 | 包装机传感器-搅拌站传感器-山东称重传感器厂家-济南泰钦电气 | 医用空气消毒机-医用管路消毒机-工作服消毒柜-成都三康王 | 英语词典_成语词典_日语词典_法语词典_在线词典网 | 山东限矩型液力偶合器_液力耦合器易熔塞厂家-淄博市汇川源机械厂 | 智能型高压核相仪-自动开口闪点测试仪-QJ41A电雷管测试仪|上海妙定 | 叉车电池-叉车电瓶-叉车蓄电池-铅酸蓄电池-电动叉车蓄电池生产厂家 | 香港新时代国际美容美发化妆美甲培训学校-26年培训经验,值得信赖! | 防腐储罐_塑料储罐_PE储罐厂家_淄博富邦滚塑防腐设备科技有限公司 | 安德建奇火花机-阿奇夏米尔慢走丝|高维|发那科-北京杰森柏汇 | 防爆暖风机_防爆电暖器_防爆电暖风机_防爆电热油汀_南阳市中通智能科技集团有限公司 | 中高频感应加热设备|高频淬火设备|超音频感应加热电源|不锈钢管光亮退火机|真空管烤消设备 - 郑州蓝硕工业炉设备有限公司 | 基本型顶空进样器-全自动热脱附解吸仪价格-AutoHS全模式-成都科林分析技术有限公司 | 郑州爱婴幼师学校_专业幼师培训_托育师培训_幼儿教育培训学校 | 长沙发电机-湖南发电机-柴油发电机供应厂家-长沙明邦智能科技 |