日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

用Python實現一個簡單的多線程TCP服務器的教程

系統 1764 0

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

其實python在類的設計上已經考慮到了這一方面的需求,我們只要在自己的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()


          

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

            
#!/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中輸入測試:?

用Python實現一個簡單的多線程TCP服務器的教程_第1張圖片

用Python實現一個簡單的多線程TCP服務器的教程_第2張圖片


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 鱼台县| 荆门市| 宾川县| 大化| 扶风县| 丹寨县| 定安县| 石台县| 南昌市| 武山县| 慈溪市| 酒泉市| 来凤县| 平罗县| 兴国县| 贵州省| 临泽县| 阿合奇县| 海阳市| 万宁市| 汝南县| 淮阳县| 若尔盖县| 赤水市| 名山县| 修文县| 眉山市| 即墨市| 威海市| 承德县| 桐庐县| 沛县| 翁牛特旗| 宝清县| 叙永县| 洪湖市| 阿荣旗| 慈利县| 大姚县| 北宁市| 贺州市|