服务器客户端应用程序,我很难考虑一种干净的方法来处理服务器端的客户端数据
-
08-10-2019 - |
题
我有一个在Linux上用C ++编写的服务器客户端应用程序。当客户端连接到我的服务器时,服务器会产生一个线程,该线程等待客户端发送服务器命令执行。这些命令取决于OS。客户端正在与服务器通话的线程,调用执行客户端想要的必需命令的全局函数。因此,我必须为客户端发送到要执行的服务器的每个OS依赖命令都有两个函数。所有这些全局函数都是在主线函数的同一标头中定义的。对于不同的操作系统,所有这些功能都变得有些混乱。我的想法是编写两个称为WindowsFuncs和LinuxFuncs的类,它们具有静态成员函数,可为该OS设计该类所需的命令。关于如何清洁我的逻辑的堆叠式流体想法有哪些?
解决方案
这听起来不像是线程问题。听起来您可以使用简单的继承。
使用类似的东西
abstract class OSMethods {
void listDir();
}
class OSMethodsLinux : OSMethods {
void listDir() { system.exec("ls"); }
}
class OSMethodsWin : OSMethods {
void listDir() { system.exec("dir"); }
}
然后服务器客户端处理代码具有类似的方法
void accept(Socket s, OSMethods m) {
s.readCommand();
m.listDir(); // or whatever
}
确保通过正确的实例接受Linux或Win类。因此没有静态方法。
通常,我发现您的程序中不需要静态方法(Main除外),除非您做聪明的事情,否则大多数事情都不需要它们,并且它们会导致灵活的设计。
不隶属于 StackOverflow