做爰高潮a片〈毛片〉,尤物av天堂一区二区在线观看,一本久久A久久精品VR综合,添女人荫蒂全部过程av

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當(dāng)前位置: 首頁 - 科技 - 知識(shí)百科 - 正文

講解Python中SocketServer模塊處理網(wǎng)絡(luò)請(qǐng)求

來源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-27 14:26:15
文檔

講解Python中SocketServer模塊處理網(wǎng)絡(luò)請(qǐng)求

講解Python中SocketServer模塊處理網(wǎng)絡(luò)請(qǐng)求:SocketServer創(chuàng)建一個(gè)網(wǎng)絡(luò)服務(wù)框架。它定義了類來處理TCP,UDP, UNIX streams 和UNIX datagrams上的同步網(wǎng)絡(luò)請(qǐng)求。一、Server Types有五個(gè)不同的服務(wù)器類在SocketServer中。1.BaseServer定義了API, 而且他不是用來實(shí)例化和直接使用的。2.TCP
推薦度:
導(dǎo)讀講解Python中SocketServer模塊處理網(wǎng)絡(luò)請(qǐng)求:SocketServer創(chuàng)建一個(gè)網(wǎng)絡(luò)服務(wù)框架。它定義了類來處理TCP,UDP, UNIX streams 和UNIX datagrams上的同步網(wǎng)絡(luò)請(qǐng)求。一、Server Types有五個(gè)不同的服務(wù)器類在SocketServer中。1.BaseServer定義了API, 而且他不是用來實(shí)例化和直接使用的。2.TCP

SocketServer創(chuàng)建一個(gè)網(wǎng)絡(luò)服務(wù)框架。它定義了類來處理TCP,UDP, UNIX streams 和UNIX datagrams上的同步網(wǎng)絡(luò)請(qǐng)求。

一、Server Types

有五個(gè)不同的服務(wù)器類在SocketServer中。

1.BaseServer定義了API, 而且他不是用來實(shí)例化和直接使用的。
2.TCPServer用作TCP/IP的socket通訊。
3.UDPServer使用datagram sockets。
4.UnixStreamServer和UnixDatagramServer使用Unix-domain sockets而且智能在unix平臺(tái)上使用。

二、Server Objects

構(gòu)建一個(gè)服務(wù)器, 通過它來監(jiān)聽請(qǐng)求的地址和請(qǐng)求的處理類(not instance)。

1.class SocketServer.BaseServer
這是模塊中所有服務(wù)器對(duì)象的超類,它定義了接口,實(shí)現(xiàn)大多數(shù)都在子類中完成。

2.BaseServer.fileno

返回一個(gè)整數(shù)文件描述符來表示哪個(gè)服務(wù)器正在監(jiān)聽。這個(gè)函數(shù)最常見的傳遞給select.select(),允許監(jiān)控多個(gè)相同處理過程的服務(wù)。

3.BaseServer.handle_request

處理單一的請(qǐng)求,這個(gè)函數(shù)會(huì)順序調(diào)用接下來的方法。get_request(),verify_request和proccess_request。
用戶提供handle()方法拋出一個(gè)異常,那么handle_error()方法會(huì)被調(diào)用。
self.timeout的時(shí)間內(nèi)沒有收到請(qǐng)求,handle_timeout()和handle_request()將返回。

4.BaseServer.serve_forever

BaseServer.serve_forever(poll_interval=0.5),處理請(qǐng)求一直到明確的shutdown()請(qǐng)求。輪訓(xùn)每隔poll_interval時(shí)間內(nèi)關(guān)閉。忽略self.timeout,如果需要使用定時(shí)任務(wù),需要使用其他線程。

5.BaseServer.shutdown

告訴serve_forever()循環(huán)停止。

6.BaseServer.RequestHandlerClass

用戶請(qǐng)求處理程序類,為每個(gè)請(qǐng)求創(chuàng)建這個(gè)類的一個(gè)實(shí)例。

三、Implementing a Server

如果你創(chuàng)建一個(gè)服務(wù)器,它通常可以重復(fù)使用現(xiàn)有的類和簡單的提供一個(gè)自定義請(qǐng)求處理的類。如果不符合需求,有幾種BaseServer方法覆蓋一個(gè)子類。

1.verify_request(reqeust, client_address): 必須返回一個(gè)布爾值,如果返回True,請(qǐng)求將被處理,如果返回False,請(qǐng)求將被拒絕。這個(gè)函數(shù)可以覆蓋來實(shí)現(xiàn)訪問控制服務(wù)。
2.process_request(request, client_address): 調(diào)用finish_request來創(chuàng)建一個(gè)RequestHandlerClass()的實(shí)例,如果需要該函數(shù)可以創(chuàng)建一個(gè)新的進(jìn)程或協(xié)程來處理請(qǐng)求。
3.finish_request(request, client_address): 創(chuàng)建一個(gè)請(qǐng)求處理實(shí)例。調(diào)用handle()來處理請(qǐng)求。

四、Request Handlers

請(qǐng)求處理程序做的大部分工作接收傳入的請(qǐng)求,并決定采取何種行動(dòng)。處理程序負(fù)責(zé)實(shí)現(xiàn)“協(xié)議”上的套接字層(例如,HTTP或xml - rpc)。從傳入的請(qǐng)求處理程序讀取請(qǐng)求數(shù)據(jù)通道,流程,和寫一個(gè)響應(yīng)。有三個(gè)方法可以重寫。

1.setup(): 準(zhǔn)備請(qǐng)求的請(qǐng)求處理程序, 就是初始化運(yùn)行在handle之前。
2.handle(): 做真正的請(qǐng)求工作。解析傳入的請(qǐng)求,處理數(shù)據(jù)和返回響應(yīng)。
3.finish(): 清理任意時(shí)間創(chuàng)建的setup()。

五、例子

下面例子展示了tcp, udp和異步

1.TCPServer 例子

import SocketServer


class MyHandler(SocketServer.BaseRequestHandler):
 
 def handle(self):
 self.data = self.request.recv(1024).strip()
 print '{} wrote:'.format(self.client_address[0])
 print self.data
 self.request.sendall(self.data.upper())


if __name__ == '__main__':
 HOST, PORT = 'localhost', 9999
 server = SocketServer.TCPServer((HOST, PORT), MyHandler)
 server.serve_forever()

2.UDPServr 例子

import SocketServer


class MyHandler(SocketServer.BaseRequestHandler):

 def handle(self):
 data = self.request[0].strip()
 socket = self.request[1]
 print '{} wrote:'.format(self.client_address[0])
 print data
 socket.sendto(data.upper(), self.client_address)


if __name__ == '__main__':
 HOST, PORT = 'localhost', 9999
 server = SocketServer.UDPServer((HOST, PORT), MyHandler)
 server.serve_forever()

3.異步例子

可以通過ThreadingMixIn和ForkingMixIn類來構(gòu)造異步處理程序。

import socket
import threading
import SocketServer


class MyHandler(SocketServer.BaseRequestHandler):

 def handle(self):
 data = self.request.recv(1024)
 curr_thread = threading.current_thread()
 response = '{}: {}'.format(curr_thread.name, data)
 self.request.sendall(response)


class Server(SocketServer.ThreadingMixIn, SocketServer.TCPServer):
 pass


def client(ip, port, message):
 sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
 sock.connect((ip, port))
 try:
 sock.sendall(message)
 response = sock.recv(1024)
 print 'Received: {}'.format(response)
 finally:
 sock.close()


if __name__ == '__main__':
 HOST, PORT = 'localhost', 0

 server = Server((HOST, PORT), MyHandler)
 ip, port = server.server_address

 serer_thread = threading.Thread(target=server.serve_forever)
 server_thread.daemon = True
 server_thread.start()
 print 'Server loop running in thread:', server_thread.name

 client(ip, port, 'Hello World 1')
 client(ip, port, 'Hello World 2')
 client(ip, port, 'Hello World 3')

 server.shutdown()
 server.server_close()

4.SocketServer 實(shí)現(xiàn)客戶端與服務(wù)器間非阻塞通信
(1)創(chuàng)建SocketServerTCP服務(wù)端

#創(chuàng)建SocketServerTCP服務(wù)器: 
import SocketServer 
from SocketServer import StreamRequestHandler as SRH 
from time import ctime 
 
host = 'xxx.xxx.xxx.xxx' 
port = 9999 
addr = (host,port) 
 
class Servers(SRH): 
 def handle(self): 
 print 'got connection from ',self.client_address 
 self.wfile.write('connection %s:%s at %s succeed!' % (host,port,ctime())) 
 while True: 
 data = self.request.recv(1024) 
 if not data: 
 break 
 print data 
 print "RECV from ", self.client_address[0] 
 self.request.send(data) 
print 'server is running....' 
server = SocketServer.ThreadingTCPServer(addr,Servers) 
server.serve_forever()

(2)創(chuàng)建SocketServerTCP客戶端

from socket import * 
 
host = 'xxx.xxx.xxx.xxx' 
port = 9999 
bufsize = 1024 
addr = (host,port) 
client = socket(AF_INET,SOCK_STREAM) 
client.connect(addr) 
while True: 
 data = raw_input() 
 if not data or data=='exit': 
 break 
 client.send('%s
' % data) 
 data = client.recv(bufsize) 
 if not data: 
 break 
 print data.strip() 
client.close()

更講解Python中SocketServer模塊處理網(wǎng)絡(luò)請(qǐng)求相關(guān)文章請(qǐng)關(guān)注PHP中文網(wǎng)!

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

講解Python中SocketServer模塊處理網(wǎng)絡(luò)請(qǐng)求

講解Python中SocketServer模塊處理網(wǎng)絡(luò)請(qǐng)求:SocketServer創(chuàng)建一個(gè)網(wǎng)絡(luò)服務(wù)框架。它定義了類來處理TCP,UDP, UNIX streams 和UNIX datagrams上的同步網(wǎng)絡(luò)請(qǐng)求。一、Server Types有五個(gè)不同的服務(wù)器類在SocketServer中。1.BaseServer定義了API, 而且他不是用來實(shí)例化和直接使用的。2.TCP
推薦度:
  • 熱門焦點(diǎn)

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 翁牛特旗| 同仁县| 无棣县| 循化| 剑川县| 海伦市| 鄂伦春自治旗| 长岭县| 九寨沟县| 准格尔旗| 迁安市| 锡林郭勒盟| 纳雍县| 固原市| 文安县| 景宁| 拉萨市| 永平县| 郑州市| 乌拉特前旗| 神池县| 华容县| 金华市| 清苑县| 上虞市| 平武县| 东乡族自治县| 昌乐县| 通渭县| 昂仁县| 额尔古纳市| 长葛市| 萨迦县| 清镇市| 天柱县| 宣威市| 时尚| 大厂| 策勒县| 祁阳县| 德安县|