国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題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關鍵字專題關鍵字專題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
當前位置: 首頁 - 科技 - 知識百科 - 正文

講解Python中SocketServer模塊處理網絡請求

來源:懂視網 責編:小采 時間:2020-11-27 14:26:15
文檔

講解Python中SocketServer模塊處理網絡請求

講解Python中SocketServer模塊處理網絡請求:SocketServer創建一個網絡服務框架。它定義了類來處理TCP,UDP, UNIX streams 和UNIX datagrams上的同步網絡請求。一、Server Types有五個不同的服務器類在SocketServer中。1.BaseServer定義了API, 而且他不是用來實例化和直接使用的。2.TCP
推薦度:
導讀講解Python中SocketServer模塊處理網絡請求:SocketServer創建一個網絡服務框架。它定義了類來處理TCP,UDP, UNIX streams 和UNIX datagrams上的同步網絡請求。一、Server Types有五個不同的服務器類在SocketServer中。1.BaseServer定義了API, 而且他不是用來實例化和直接使用的。2.TCP

SocketServer創建一個網絡服務框架。它定義了類來處理TCP,UDP, UNIX streams 和UNIX datagrams上的同步網絡請求。

一、Server Types

有五個不同的服務器類在SocketServer中。

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

二、Server Objects

構建一個服務器, 通過它來監聽請求的地址和請求的處理類(not instance)。

1.class SocketServer.BaseServer
這是模塊中所有服務器對象的超類,它定義了接口,實現大多數都在子類中完成。

2.BaseServer.fileno

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

3.BaseServer.handle_request

處理單一的請求,這個函數會順序調用接下來的方法。get_request(),verify_request和proccess_request。
用戶提供handle()方法拋出一個異常,那么handle_error()方法會被調用。
self.timeout的時間內沒有收到請求,handle_timeout()和handle_request()將返回。

4.BaseServer.serve_forever

BaseServer.serve_forever(poll_interval=0.5),處理請求一直到明確的shutdown()請求。輪訓每隔poll_interval時間內關閉。忽略self.timeout,如果需要使用定時任務,需要使用其他線程。

5.BaseServer.shutdown

告訴serve_forever()循環停止。

6.BaseServer.RequestHandlerClass

用戶請求處理程序類,為每個請求創建這個類的一個實例。

三、Implementing a Server

如果你創建一個服務器,它通常可以重復使用現有的類和簡單的提供一個自定義請求處理的類。如果不符合需求,有幾種BaseServer方法覆蓋一個子類。

1.verify_request(reqeust, client_address): 必須返回一個布爾值,如果返回True,請求將被處理,如果返回False,請求將被拒絕。這個函數可以覆蓋來實現訪問控制服務。
2.process_request(request, client_address): 調用finish_request來創建一個RequestHandlerClass()的實例,如果需要該函數可以創建一個新的進程或協程來處理請求。
3.finish_request(request, client_address): 創建一個請求處理實例。調用handle()來處理請求。

四、Request Handlers

請求處理程序做的大部分工作接收傳入的請求,并決定采取何種行動。處理程序負責實現“協議”上的套接字層(例如,HTTP或xml - rpc)。從傳入的請求處理程序讀取請求數據通道,流程,和寫一個響應。有三個方法可以重寫。

1.setup(): 準備請求的請求處理程序, 就是初始化運行在handle之前。
2.handle(): 做真正的請求工作。解析傳入的請求,處理數據和返回響應。
3.finish(): 清理任意時間創建的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類來構造異步處理程序。

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 實現客戶端與服務器間非阻塞通信
(1)創建SocketServerTCP服務端

#創建SocketServerTCP服務器: 
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)創建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模塊處理網絡請求相關文章請關注PHP中文網!

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

講解Python中SocketServer模塊處理網絡請求

講解Python中SocketServer模塊處理網絡請求:SocketServer創建一個網絡服務框架。它定義了類來處理TCP,UDP, UNIX streams 和UNIX datagrams上的同步網絡請求。一、Server Types有五個不同的服務器類在SocketServer中。1.BaseServer定義了API, 而且他不是用來實例化和直接使用的。2.TCP
推薦度:
標簽: 網絡 請求 模塊
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 欧美在线视频网 | 一级大黄毛片 | 日韩在线欧美在线 | 亚洲欧洲高清有无 | 免费看全黄特黄毛片 | 福利视频一区二区牛牛 | 精品日韩欧美 | 亚洲精品社区 | 久久亚洲伊人中字综合精品 | 国产码欧美日韩高清综合一区 | 午夜在线免费视频 | 亚洲欧美网 | 亚洲精品国产自在久久出水 | 日韩欧美国产中文 | 亚洲色图欧美 | 中日韩一区二区三区 | 成人精品一区二区三区 | 久久一区二区三区精品 | 手机在线国产视频 | 国产精品制服诱惑 | 亚洲a∨精品一区二区三区下载 | 日韩在线视频免费播放 | 亚洲视频大全 | 91久久精品国产91性色tv | 国产中出| 欧美精品亚洲精品日韩专区va | 日本不卡一区二区三区四区 | 一区在线观看 | 国产91一区二这在线播放 | 国产盗摄精品一区二区三区 | 国产区一区二 | 国产精品香蕉 | 国产区视频在线 | 亚洲成人一区二区 | 午夜精品一区二区三区在线视 | 亚洲好骚综合 | 国产高清美女一级a毛片久久 | 亚洲 欧美 国产另类首页 | 婷婷伊人 | 91中文字幕在线观看 | 亚洲国产精品免费 |