【发布时间】:2015-12-25 03:11:09
【问题描述】:
我正在编写一个客户端服务器程序,我的想法是让服务器尽可能简单。服务器将需要完成诸如“移动此文件”、“删除文件”之类的任务,对文件中的列运行此复杂算法并发回结果。
我创建了一个抽象类,它将在服务器和客户端之间发送,称为 aTodo 在这个抽象类中有一个称为 DoClass() 的方法将由服务器运行。
目前我的服务器正在侦听并等待连接。当它接收到一个连接时,它会通过反序列化创建一个 aTodo 类型的对象。然后服务器在该对象中运行 DoClass 函数。然后服务器序列化对象并将其发送回客户端。 以下是参考代码:
protocolBaseServer pBase(newSockFd); //create socket
std::unique_ptr<aTodo> DoThis; //create object variable
DoThis=protocolCom::Read<aTodo>(pBase); //read the stream into the variable
DoThis->DoClass();//call the do function in the
protocolCom::Write(DoThis,pBase);//write back to the client
这是对服务器进行编程的好方法吗?在服务器上非常简单。
我想的另一种方法是创建一个可以序列化并来回发送的委托类。委托将有一个 DoDelegate 方法。然后用户可以将任何函数放入委托的 DoDelegate 方法中。这将影响允许服务器运行类中的任何方法,而不仅仅是我现在运行服务器的 Single DoClass 方法。
谢谢
【问题讨论】:
-
在没有 SSCCE 的情况下,我们无法提供具体的反馈。也许你不是在寻找那个,这就是我提供答案的原因。
标签: c++ sockets boost server client