2016-02-18 106 views
0

我想實現支持TCP/UDP協議的客戶端+服務器。這個想法是,相同的程序將在兩臺機器上運行,它們應該能夠相互通信。傳統上是爲客戶端創建一個類,爲服務器創建一個類(對於每個協議 - 因此總共有4個類),並在主要實例化客戶端對象和服務器對象?或者創建一個實現客戶端和服務器功能的類是一個很好的設計實踐。什麼是普遍接受的做法。 boost examples顯示了爲每個客戶端和服務器實現的一個類。使用boost的C++中的TCP和UDP客戶端+服務器

+0

您需要不同的TCP客戶端和服務器類,但UDP類可能是相同的。 [via-httplib](https://github.com/kenba/via-httplib)中的通信代碼支持TCP和UDP協議,基於boost asio。 – kenba

回答

1

TCP/UDP協議可以被另一組類(可以稱爲通道,流,協議等)抽象。然後,您將擁有Client類和Server類,並且它們中的每一個都可以使用TcpChannel和UdpChannel(或兩者都可以在運行時在它們之間進行選擇)。這是我看到這個實現的方式。 Channel然後可以提供服務器和客戶端使用的讀取和寫入方法。

+0

你能指點我一些具體的例子嗎?謝謝 – liv2hak

+0

那麼,這是在一個專有的封閉的源代碼,但在原則上並不難。基類僅提供純虛擬讀/寫方法(或其他任何必需的),然後在TCP和UDP實現中適當地實現。然後較高級別的實現可以將指針指向其中的一個,具體取決於設置,並以統一的方式使用。 – axalis