samples目錄下面為自帶的DEMO
發現有很多朋友不知道如何開始DIOCP,下面是DEMO的簡單說明,希望對大家有用
C#\Simple
用C#寫的一個簡單的回傳測試,服務端開啟ECHO服務器即可
samples\ECHO
IOCP回射測試,在服務端收到數據後立即發送回客戶端,
可以從這個DEMO看出如何在服務端接收數據,返回數據。
samples\iocpTask
iocpTask演示DEMO,異步任務執行DEMO,
可以在該DEMO中學到,如何投遞任務讓主線程去執行(訪問UI最好在主線程訪問)。
可以學到如果注冊信號任務,如何觸發信號任何,如何反注冊信號。
信號任務可以在一個位置進行注冊,在子線程中通過信號進行觸發,可以有效的進行解耦你的代碼。
更多的功能可以使用QDAC3中的QWorkers
samples\qdac3-source
qdac3項目源碼, 優秀的開源項目,你可以更新到qdac項目中去更新最新版,
一些DEMO中有使用到。
samples\safeLogger
SafeLogger的使用DEMO,
可以在該DEMO中學習到如何使用SafeLogger將日志顯示到MEMO,
如何使用SafeLogger將日志記錄到文件。
samples\simple
最簡單的DIOCP使用例子
客戶端采用阻塞模式,發送數據到服務端,然後服務端自己返回,客戶端等待接收數據.
=================================================================================
samples\socket-Coder
編碼器方式的DEMO,編碼器模式的存在可以讓大家在使用DEMO的時候直接傳遞對象,而不用你去處理粘包問題,
編碼器模式在解碼成功後將接收到的對象投遞到iocpTask/qworkers的線程中去執行,這樣不會阻塞diocp的通信線程,即使在處理復雜的業務邏輯,也不影響到數據的接收和發送。
samples\socket-Coder\diocpCoders
常用的一些編碼和解碼器,
JsonStream: 包含一個Json和一個Stream
TStream : 通用簡單的TStream對象,頭標記 + CRC + 數據長度 + 數據
TMsgPackCoder: msgpack對象。使用Qmsgpack進行解析
推薦搭建使用TStream的編碼和解碼模式,因為很多對象都能序列化到流和從流中還原。
例如 msgpack -> TStream -> diocp -> TStream ->msgpack
samples\socket-Coder\StreamCoder
Stream編碼器模式例子。
可以在該DEMO中學習到如果直接發送一個TStream對象,如何在服務端中接收到到這個對象,如果將一個Stream對象推送給客戶端。
可以在該DEMO學習到iocpCoderClient(客戶端iocp)的使用。
客戶端有阻塞模式(RawTcpClient)和異步接受(Client)模式。
samples\socket-Coder\DataModuleDEMO-Andriod
手機Andriod客戶端與diocp服務器交換數據的例子
可以學習到如何在andriod中請求diocp執行sql語句返回一個TClientDataSet的數據,並在手機上進行顯示
samples\socket-Coder\DataModuleDEMO
三層數據演示
可以學習到如何在客戶端中請求diocp執行sql語句返回一個TClientDataSet的數據,並在客戶端進行顯示
samples\socket-Coder\DataModuleDEMO-SimpleMsgPack
使用simpleMsgPack代替QMsgPack,可以在D7中使用
samples\socket-Coder\DIOCPFileSERVER
演示DIOCP如何作為文件服務器使用
可以學習到如果分塊上傳文件和下載文件