求教一個問題:
SERVER端接受客戶端的連接。有一種情況是每個客戶端的任務不同,所以設計了多個CClientObject類,比如:CClientObject1,CClientObject2 ~~~
對接入的CLIENT如何設計,根據需求實體化不同的一個客戶端類物件?大概的思路應該如何實施?
SOCKET sClient = ::accept();
// to do ... 針對不同的需求,實體化一個客戶端類物件。
其實,就是不同客戶端的業務邏輯有所不同。底層的socket通信當然沒區別。如何實作不同的客戶端不同的業務邏輯?
uj5u.com熱心網友回復:
資料的接收/發送和處理的處理邏輯上分開,資料的處理在業務邏輯上再細化,交由不同的功能模塊去處理。uj5u.com熱心網友回復:
是的,是這么個考慮。我有點沒透徹的地方就是如何針對不同的業務,實體化不同的業務處理類。我明白你的意思。
比如socketClient負責通信類,單純的面向業務層實作sendata/recvdata操作,提供相應介面。那么根據業務需求,比如有3種業務對應。
那么如果根據接收的資料派送給不同的業務模塊分析,是不是就必然要求socketClient類宣告3個業務決議支持物件,比如:
uj5u.com熱心網友回復:
比如:socketClient:serviceParser1,serviceParser2,serviceParser3
我本來設想客戶端被accept后,設計一個方法直接實體化一個繼承自socketClient的業務模塊。或者通過一個業務模塊的指標分配一個業務決議物件給它也可以。目的就是實作客戶端和業務模塊的1對1系結。
CClientObj1::socketClient
CClientObj2::socketClient
CClientObj3::socketClient
或者別的思路也行,能夠實作目標合理架構即可。
uj5u.com熱心網友回復:
其實,我的理解我這個需求,是不是需要一個業務申明的程序?一個客戶端連接后,如果不做任何資料互動,是無法確定它的的業務需求的。要么就是在OnRecvDataComplete事件時候觸發對業務的識別。然后如何建立socket和業務模塊的系結關系呢?void指標,總之最后需要明確業務才好呼叫該業務決議的介面做事情,否則要對所有業務統一抽象介面,不太現實啊。求指導。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/33453.html
標籤:網絡編程
下一篇:兼容性問題
