国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > Python > 正文

用Python實(shí)現(xiàn)一個(gè)簡(jiǎn)單的多線程TCP服務(wù)器的教程

2019-11-25 17:32:45
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

 最近看《python核心編程》,書中實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的1對(duì)1的TCPserver,但是在實(shí)際使用中1對(duì)1的形勢(shì)明顯是不行的,所以研究了一下如何在server端通過(guò)啟動(dòng)不同的線程(進(jìn)程)來(lái)實(shí)現(xiàn)每個(gè)鏈接一個(gè)線程。

其實(shí)python在類的設(shè)計(jì)上已經(jīng)考慮到了這一方面的需求,我們只要在自己的server上繼承一下SocketServer.BaseRequestHandler就可以了。
server端代碼如下:

#!/usr/bin/env python import SocketServer from time import ctime HOST = '' PORT = 21567 ADDR = (HOST, PORT) class MyRequestHandler(SocketServer.BaseRequestHandler):   def handle(self):     print '...connected from:', self.client_address     while True:       self.request.sendall('[%s] %s' % (ctime(),self.request.recv(1024))) tcpServ = SocketServer.ThreadingTCPServer(ADDR, MyRequestHandler) print 'waiting for connection...' tcpServ.serve_forever()

客戶端代碼如下(基本和書中一模一樣,只是把循環(huán)中的關(guān)閉鏈接注釋掉了):

#!/usr/bin/env python from socket import * HOST = 'localhost' PORT = 21567 BUFSIZ = 1024 ADDR = (HOST, PORT) while True:   tcpCliSock = socket(AF_INET, SOCK_STREAM)   tcpCliSock.connect(ADDR)   data = raw_input('> ')   if not data:     break   tcpCliSock.send('%s/r/n' % data)   data = tcpCliSock.recv(BUFSIZ)   if not data:     break   print data.strip() #tcpCliSock.close()

從客戶端的代碼可以看出,每次輸入都會(huì)建立一次新的請(qǐng)求。
測(cè)試一下,啟動(dòng)server和client之后,在client中輸入測(cè)試: 

201555114612673.png (434×234)

201555114637991.png (438×202)

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 噶尔县| 白沙| 富源县| 辽阳市| 台中市| 乌兰浩特市| 临高县| 绿春县| 巴彦淖尔市| 凤翔县| 常山县| 左贡县| 乌兰浩特市| 田东县| 渝中区| 双辽市| 永春县| 天等县| 象山县| 吴江市| 荔浦县| 霍山县| 阿克苏市| 株洲县| 泗洪县| 龙胜| 富裕县| 工布江达县| 子洲县| 丁青县| 资溪县| 金堂县| 贡嘎县| 边坝县| 汕头市| 乌拉特后旗| 金平| 梁山县| 阳泉市| 巴南区| 台北市|