日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

twisted 网络通信的简单例子

發布時間:2025/3/17 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 twisted 网络通信的简单例子 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

#!?/usr/bin/env?python #coding=utf-8 from?twisted.internet?import?protocol,?reactor,?defer from?twisted.protocols?import?basic from?gcutils.db?import?MySQLMgr import?sys from?twisted.internet.protocol?import?ServerFactory from?twisted.protocols.basic?import?LineReceiver from?twisted.python?import?log from?twisted.internet?import?reactorclass?CmdProtocol(LineReceiver):delimiter?=?'\n'def?connectionMade(self):self.client_ip?=?self.transport.getPeer().hostlog.msg("Client?connection?from?%s"?%?self.client_ip)if?len(self.factory.clients)?>=?self.factory.clients_max:log.msg("Too?many?connections.?bye?!")self.client_ip?=?Noneself.transport.loseConnection()else:self.factory.clients.append(self.client_ip)def?connectionLost(self,?reason):log.msg('Lost?client?connection.?Reason:?%s'?%?reason)if?self.client_ip:self.factory.clients.remove(self.client_ip)def?lineReceived(self,?line):log.msg('Cmd?received?from?%s?:?%s'?%?(self.client_ip,?line))class?MyFactory(ServerFactory):protocol=CmdProtocoldef?__init__(self,?clients_max=10):self.clients_max?=?clients_maxself.clients?=?[]log.startLogging(sys.stdout) reactor.listenTCP(9999,?MyFactory(2)) reactor.run()在上面的代碼中我們創建了"ServerFactory"類,這個工廠類負責返回“CmdProtocol”的實例。每一個連接都由實例化的“CmdProtocol”實例來做處理。?Twisted的reactor會在TCP連接上后自動創建CmdProtocol的實例。如你所見,protocol類的方法都對應著一種事件處理。 當client連上server之后會觸發“connectionMade"方法,在這個方法中你可以做一些 鑒權之類的操作,也可以限制客戶端的連接總數。每一個protocol的實例都有一個工廠 的引用,使用self.factory可以訪問所在的工廠實例。 上面實現的”CmdProtocol“是twisted.protocols.basic.LineReceiver的子類, LineReceiver類會將客戶端發送的數據按照換行符分隔,每到一個換行符都會觸發 lineReceived方法。稍后我們可以增強LineReceived來解析命令。 Twisted實現了自己的日志系統,這里我們配置將日志輸出到stdout 當執行reactor.listenTCP時我們將工廠綁定到了9999端口開始監聽。


轉載于:https://my.oschina.net/u/1458120/blog/552877

總結

以上是生活随笔為你收集整理的twisted 网络通信的简单例子的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。