客户端服务器API交互
Client Server API interaction
我正在编写一个客户端服务器程序,我的想法是让服务器尽可能简单。服务器将需要完成诸如"移动这个文件"、"删除一个文件"等任务,在文件中的列上运行这个复杂的算法并返回结果。
我已经创建了一个抽象类,它将在服务器和客户端之间发送,称为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方法中。这实际上允许服务器运行类中的任何方法,而不仅仅是我现在让服务器运行的单个DoClass方法。
谢谢
这是做梦的好方法…
如何序列化泛型委托?这不是c++所能做到的…
同样,此时您的客户端必须包含服务器实现的所有逻辑。因为你实际上是通过序列化发送服务器类。
我认为您需要将命令对象和实现相应操作的处理程序分开。
另外,我建议服务器将接收到的命令排成队列,然后由一个单独的工作程序处理队列中的命令。
解决这个问题的常见方法是使用异步套接字io框架,如ACE或Asio。相关文章:
- Qt VTK交互风格的信号到小部件
- 用于访问容器<T>数据成员的正确 API
- 如何使用Luacneneneba API正确读取字符串和表参数
- C++MySQL C api用户输入行
- 如何使用 AWS Transcribe C++ API 中的'StartTranscriptionJobRequest'?
- 将std::string传递给WriteConsole API
- EvtExportLogneneneba API正在将远程计算机的事件日志保存到远程PC本身.如何将其保存到主机
- Qt Quick-如何仅从c++代码与qml属性交互
- 在gtest.中使用fff.h模拟系统API
- 有没有任务栏API可以立即应用注册表更改
- C++win32 API创建多个类似视口的窗口
- 使用libcurl提交批量url的正确BING Api POST url是什么
- 如何将真正的字符串从python c-api转换为python脚本
- 使用Qt框架在c ++类中创建API调用
- Libreoffice API (UNO):需要更改用户的 xTextField 文本
- 使用 WIN32 API (C/C++) 对特定树视图项进行着色
- 为什么 wx 在这里不使用引用,wx 的 API 和端口层如何交互?
- 现代Windows输入API/用户交互API
- 通过casablanca库与github API交互
- 客户端服务器API交互