我使用扭曲的框架運行HTTP服務器。有什麼辦法可以「手動」要求它處理一些有效載荷?例如,如果我構建了一些以太網幀,我可以問一下扭曲的反應器來處理它,就像它剛到達我的網卡上一樣?手動給扭曲(網絡)網絡堆棧一個數據包進行處理?
回答
你可以做這樣的事情:
from twisted.web import server
from twisted.web.resource import Resource
from twisted.internet import reactor
from twisted.internet.protocol import Protocol, ClientFactory
class SomeWebThing(Resource):
def render_GET(self, request):
return "hello\n"
class SomeClient(Protocol):
def dataReceived(self, data):
p = self.factory.site.buildProtocol(self.transport.addr)
p.transport = self.transport
p.dataReceived(data)
class SomeClientFactory(ClientFactory):
protocol = SomeClient
def __init__(self, site):
self.site = site
if __name__ == '__main__':
root = Resource()
root.putChild('thing', SomeWebThing())
site = server.Site(root)
reactor.listenTCP(8000, site)
factory = SomeClientFactory(site)
reactor.connectTCP('localhost', 9000, factory)
reactor.run()
,並保存爲simpleinjecter.py,如果再(在命令行)做:
echo -e "GET /thing HTTP/1.1\r\n\r\n" | nc -l 9000 # runs a server, ready to send req to first client connection
python simpleinjecter.py
它應該工作的預期,來自端口9000上的NC服務器的請求被作爲有效負載集中到扭曲的Web服務器上,並且響應按照預期返回。
關鍵行在SomeClient.dataRecieved()中。你需要一個帶有正確方法的傳輸對象 - 在上面的例子中,我只是從客戶端連接中竊取對象。如果你不打算這樣做,我想你必須創建一個,因爲堆棧將要執行諸如調用getPeer()之類的操作。
什麼是用例?
也許你想創建自己的Datagram Protocol
在基地,在那裏你 實際實現協議 解析和處理的地方,是 DatagramProtocol類。這個類 通常來自twisted.internet.protocol.DatagramProtocol。 大多數協議處理程序都繼承此類或其子 中的一個 。 DatagramProtocol類接收 數據報,並可以通過網絡發送出 。接收到的數據報 包括它們從 發送的地址,並且在發送數據報時必須指定要發送到的地址 。
如果您想查看電線級變速箱而不是插入它們,請安裝並運行WireShark, the fantastic, free packet sniffer。
用例:我在兩臺計算機之間設置了隧道。一臺機器正在運行(扭曲)網絡服務器。當該機器通過隧道接收到TCP端口80的數據包時,我想對該數據包進行扭曲處理(就像它通過機器的NIC「正常」到達一樣)。當服務器生成TCP/IP回覆時,我想通過隧道將它們發回。 – 2009-10-25 15:17:30
可以通過SSH隧道設置端口轉發。您可以運行HAProxy或類似的代替定製解決方案,並通過隧道將連接轉發到其他計算機上。 – 2009-10-25 21:03:07
- 1. Android網絡堆棧
- 2. 處理排序的網絡數據包
- 3. 凍結網絡堆棧
- 4. 網絡堆棧崩潰?
- 5. 與扭曲的網絡聊天
- 6. 將對象傳遞給網絡數據包處理程序?
- 7. 使用UDP進行網絡處理
- 8. 發佈數據到網絡進行處理
- 9. 神經網絡處理字符數據
- 10. 泊塢窗組成的網絡堆棧
- 11. Java網絡堆棧安全性?
- 12. 網絡 - 數據
- 13. LAMP堆棧作爲一個公共的網絡服務器
- 14. F#:處理網絡例外
- 15. 處理網絡斷開
- 16. 從python網絡接口讀取和處理數據包
- 17. 通過網絡跟蹤網絡數據包
- 18. 處理不活動的Wi-Fi網絡
- 19. 促進網絡
- 20. 網絡支持是否支持網絡套接字處理?
- 21. C#健壯的網絡連接處理Flask網絡
- 22. 運行下扭曲網
- 23. Python扭曲或併發編程學習插座/網絡
- 24. Python通過網絡扭曲發送大文件
- 25. 運行bash腳本捲曲從網絡
- 26. 是否有一個「塊接收」的回調在扭曲的網絡
- 27. Cordova/Ionic移動網絡觀衆網絡
- 28. 直接從網絡對圖片進行Python圖像處理
- 29. 使用PHP通過本地網絡進行文件處理
- 30. 在c中捕獲網絡數據包
以太網幀的處理水平要比絞合處理的低得多,因此將其注入到網絡流中與絞合無關。 – Amok 2009-10-24 21:56:09