最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2015年05月05日 11:49:50   投稿:goldensun  
這篇文章主要介紹了用Python實(shí)現(xiàn)一個簡單的多線程TCP服務(wù)器的教程,示例的運(yùn)行環(huán)境為Windows操作系統(tǒng),需要的朋友可以參考下

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

其實(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()

從客戶端的代碼可以看出,每次輸入都會建立一次新的請求。
測試一下,啟動server和client之后,在client中輸入測試: 

201555114612673.png (434×234)

201555114637991.png (438×202)

相關(guān)文章

最新評論

青神县| 商南县| 甘肃省| 漳平市| 石泉县| 辽阳县| 盱眙县| 安福县| 梅州市| 芮城县| 玉田县| 区。| 阿拉善左旗| 宜兰市| 长丰县| 彭山县| 独山县| 西峡县| 恩施市| 九龙坡区| 田东县| 巧家县| 惠东县| 交城县| 布拖县| 綦江县| 海盐县| 汤原县| 绥阳县| 井陉县| 上栗县| 宜都市| 乐昌市| 安达市| 新乡市| 贺州市| 衡南县| 桃源县| 当雄县| 宣汉县| 江口县|