Client server app, sto avendo difficoltà nel pensare a un modo pulito per i dati dei clienti di processo sul lato server

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

Domanda

Ho un applicazione client di server scritto in C ++ su Linux. Quando un client si connette al server, i server di spawn un thread che attende che il client per inviare i comandi del server da eseguire. i comandi sono dipende dal sistema operativo. il filo che il cliente sta parlando con il server su, chiama le funzioni globali che eseguono il comando richiesto che il cliente vuole. Quindi devo avere due funzioni per tutti i sistemi operativi di comando il client invia al server da eseguire dipendeva. Tutte queste funzioni globali sono definiti nella stessa intestazione che la filettatura funzione principale è. Si sta facendo un po 'disordinato, con tutte queste funzioni per i diversi sistemi operativi. La mia idea è quella di scrivere due classi che sono chiamati WindowsFuncs e LinuxFuncs che hanno funzioni membro statiche che eseguono il comando richiesto per che il sistema operativo di classe è stato progettato per. Quali sono alcune delle stackoverflows idee su come pulire la mia logica?

È stato utile?

Soluzione

Questo non suona come un problema di threading. Sembra che si possono utilizzare semplici l'ereditarietà.

Utilizzando qualcosa come

abstract class OSMethods {
  void listDir();
}

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

codice di elaborazione client del server Poi ha metodo come

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

Assicurati di passare istanza corretta di accettare di Linux o di classe Win. Quindi non metodi statici.

In generale ho trovato che avrete bisogno di nessun metodi statici nei programmi (eccetto principale) a meno che non si sta facendo cose intelligenti, la maggior parte delle cose che proprio non li hanno bisogno e si portano a design meno flessibile.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top