aplicación cliente servidor, estoy teniendo dificultad para pensar de una manera limpia de los datos del cliente proceso en el lado del servidor

StackOverflow https://stackoverflow.com/questions/4414655

Pregunta

Tengo una aplicación cliente servidor escrito en C ++ en Linux. Cuando un cliente se conecta con el servidor, las huevas de servidor de un hilo que espera el cliente para enviar los comandos del servidor para ejecutar. los comandos son depende del sistema operativo. el hilo que el cliente está hablando con el servidor, las llamadas funciones globales que realizan el comando necesario que el cliente quiere. Así que tiene que tener dos funciones para todos los sistemas operativos dependido de comandos del cliente envía al servidor para ser ejecutado. Todas estas funciones globales se definen en la misma cabecera que la función principal es el hilo. Se está haciendo un poco desordenado con todas estas funciones para diferentes sistemas operativos de. Mi idea es escribir dos clases que son llamadas WindowsFuncs y LinuxFuncs que tienen funciones miembro estáticas que realizan el comando necesario para que la clase OS fue diseñado. ¿Cuáles son algunas de stackoverflows ideas sobre cómo limpiar mi lógica?

¿Fue útil?

Solución

Esto no suena como un problema de roscado. Parece que usted puede utilizar la herencia simple.

El uso de algo así como

abstract class OSMethods {
  void listDir();
}

class OSMethodsLinux : OSMethods {
  void listDir() { system.exec("ls"); }
} 
class OSMethodsWin : OSMethods {
  void listDir() { system.exec("dir"); }
}

A continuación, el código de procesamiento del cliente de servidor tiene como método

  void accept(Socket s, OSMethods m) {
     s.readCommand();
     m.listDir();  // or whatever
  }

Asegúrese de que pase instancia correcta para aceptar de Linux o clase de victorias. Así que no hay métodos estáticos.

En general, he encontrado que se necesita no hay métodos estáticos en sus programas (excepto principal) a menos que usted está haciendo cosas inteligentes, la mayoría de las cosas simplemente no los necesitan y que conducen al diseño menos flexible.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top