客户端服务器 API 交互
Client Server API interaction
我正在编写一个客户端服务器程序,我的想法是让服务器尽可能简单。服务器将需要完成诸如 "move this file"、"delete a file"、运行 等文件中列的复杂算法并发回结果的任务。
我创建了一个摘要 class 将在服务器和客户端之间发送,称为 aTodo
在这个抽象 class 中有一个名为 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
这是编写服务器程序的好方法吗?它在服务器上非常简单。
我考虑的另一种方法是创建一个委托 class,它将被序列化并来回发送。委托将有一个 DoDelegate 方法。然后用户可以将任何函数放入委托的 DoDelegate 方法中。这将影响允许服务器 运行 class 中的任何方法,而不仅仅是我现在拥有服务器 运行 的单一 DoClass 方法。
谢谢
梦想是一种很好的方式...
您将如何序列化通用委托?这不是 C++ 促进的东西...
此外,此时您的客户端必须包含服务器实现的所有逻辑。因为您实际上是通过序列化发送服务器 类 。
我认为您需要将命令对象和实现相应操作的处理程序分开。
此外,我建议服务器将收到的命令排队,并由一个单独的工作人员处理队列中的命令。
解决此问题的常用方法是使用异步套接字 io 框架,例如 ACE 或 Asio。
我正在编写一个客户端服务器程序,我的想法是让服务器尽可能简单。服务器将需要完成诸如 "move this file"、"delete a file"、运行 等文件中列的复杂算法并发回结果的任务。
我创建了一个摘要 class 将在服务器和客户端之间发送,称为 aTodo 在这个抽象 class 中有一个名为 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
这是编写服务器程序的好方法吗?它在服务器上非常简单。
我考虑的另一种方法是创建一个委托 class,它将被序列化并来回发送。委托将有一个 DoDelegate 方法。然后用户可以将任何函数放入委托的 DoDelegate 方法中。这将影响允许服务器 运行 class 中的任何方法,而不仅仅是我现在拥有服务器 运行 的单一 DoClass 方法。
谢谢
梦想是一种很好的方式...
您将如何序列化通用委托?这不是 C++ 促进的东西...
此外,此时您的客户端必须包含服务器实现的所有逻辑。因为您实际上是通过序列化发送服务器 类 。
我认为您需要将命令对象和实现相应操作的处理程序分开。
此外,我建议服务器将收到的命令排队,并由一个单独的工作人员处理队列中的命令。
解决此问题的常用方法是使用异步套接字 io 框架,例如 ACE 或 Asio。