2016-02-18 77 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