建立一個Twisted Reactor TCP客戶端
與SocketServer TCP客戶端不一樣的是,這個例子與之前的所有其他客戶端看上去都不大一樣。它是完全Twisted的。
例16.8 Twisted Reactor Timestamp TCP客戶端(tsTclntTW.py)
用Twisted重寫我們已經熟悉的時間戳TCP客戶端。
1#!/usr/bin/env python |
逐行解釋
1~6行
跟之前所有的客戶端程式類似,這裡還是匯入Twisted的元件。
8~22行
與伺服器一樣,我們擴充套件Protocol,重寫同樣的函式connectionMade()和dataReceived()。這兩個函式的用途也跟伺服器一樣。我們新加一個自己的函式sendData(),用於在需要傳送資料時呼叫。
由於我們現在是客戶端,所以我們要主動發起跟伺服器的對話。一旦連線建立好之後,我們先傳送一個訊息,伺服器回覆這個訊息,我們把收到的回覆顯示在螢幕上,然後再傳送其他訊息給伺服器。
這個過程會一直迴圈,直到使用者沒有給任何輸入時,連線結束。結束時,就不是呼叫transport物件的write()函式傳資料給伺服器了,而是呼叫loseConnection()函式來關閉套接字。這時,工廠的client ConnectionLost()函式會被呼叫,同時,reactor就被關閉,指令碼的執行就結束了。由於某些原因,clientConnectionFailed()被呼叫時,reactor也會被關閉。
指令碼的最後一部分是建立一個客戶端工廠,連線到伺服器,然後執行reactor。注意,我們在這裡例項化了客戶端工廠,而不是像在伺服器裡那樣把它傳到reactor中。這是因為,我們不是等待客戶端連線的伺服器,伺服器在有連線時要為每個連線建立一個新的protocol物件。我們只是一個客戶端,所以我們只要建立一個protocol物件,連線到伺服器,伺服器的工廠會建立一個protocol物件來與我們對話。
相關文章
- python建立tcp服務端和客戶端PythonTCP服務端客戶端
- 如何建立一個Java遊戲客戶端Java遊戲客戶端
- 實現一個clickhouse tcp協議客戶端驅動TCP協議客戶端
- golang實現tcp客戶端服務端程式GolangTCP客戶端服務端
- 使用 Webix 建立 Email 客戶端WebAI客戶端
- 如何建立NEO輕客戶端客戶端
- 笨辦法學C 練習45:一個簡單的TCP/IP客戶端TCP客戶端
- python 實現 TCP、UDP 客戶端最簡流程PythonTCPUDP客戶端
- websocket(多個客戶端)Web客戶端
- C#之使用CefSharp建立客戶端C#客戶端
- 7.4 為投注合約建立客戶端客戶端
- FishRedux完成一個玩安卓客戶端Redux安卓客戶端
- 匯川AM401的TCP客戶端通訊TCP客戶端
- C語言透過socket實現TCP客戶端C語言TCP客戶端
- ESP作為單連線中的TCP客戶端TCP客戶端
- TCP通訊客戶端和服務端簡單程式碼實現TCP客戶端服務端
- TCP程式設計之服務端和客戶端的開發TCP程式設計服務端客戶端
- 一個高顏值Flutter版WanAndroid客戶端FlutterNaNAndroid客戶端
- 寫一個Flutter彩票客戶端--開獎列表Flutter客戶端
- 「完整案例」基於Socket開發TCP傳輸客戶端TCP客戶端
- TCP協議服務端和客戶端的連線與通訊TCP協議服務端客戶端
- 基於node的tcp客戶端和服務端的簡單通訊TCP客戶端服務端
- ftp客戶端軟體,ftp客戶端軟體哪個好用,使用方法FTP客戶端
- Qt TCP通訊客戶端斷開連線有哪些方法QTTCP客戶端
- 基於c語言的TCP客戶端、服務端基礎程式碼C語言TCP客戶端服務端
- Laravel後臺作為客戶端,socket.io作為服務端,App或其他作為另一個客戶端Laravel客戶端服務端APP
- 一個支援Sora模型文字生成影片的Web客戶端Sora模型Web客戶端
- 擼了一個可除錯 gRPC 的 GUI 客戶端除錯RPCGUI客戶端
- 自己動手寫一個能操作redis的客戶端Redis客戶端
- Flutter 開發一個 GitHub 客戶端 | 掘金技術徵文FlutterGithub客戶端
- RMAN之客戶端互動(一)客戶端
- OrzClick: 國慶寫個 ClickHouse 客戶端客戶端
- 自己動手寫個 Android客戶端Android客戶端
- mqtt 客戶端MQQT客戶端
- dubbo客戶端客戶端
- Pulsar客戶端客戶端
- 001 Rust 網路程式設計,實現 TCP 服務端和客戶端程式Rust程式設計TCP服務端客戶端
- 服務端,客戶端服務端客戶端
- 客戶端,服務端客戶端服務端