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

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

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

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

相關(guān)文章

最新評(píng)論

新源县| 临沭县| 靖宇县| 芮城县| 阳西县| 穆棱市| 竹山县| 贞丰县| 佛学| 监利县| 湖北省| 酒泉市| 临漳县| 常山县| 定南县| 汉川市| 子洲县| 陇西县| 琼结县| 丹巴县| 桂林市| 临清市| 海宁市| 梁河县| 龙山县| 建始县| 斗六市| 鹤庆县| 永和县| 乌苏市| 公主岭市| 南陵县| 东丽区| 清原| 黔西县| 泌阳县| 曲周县| 嘉定区| 阿拉尔市| 准格尔旗| 新建县|