2011-03-31 4 views
1

J'apprends le protocole TCP/IP et j'essaie de l'utiliser pour exécuter différentes commandes sur mon serveur.TCP Serveur IP pouvant gérer plusieurs requêtes?

Je pensais que je commencerais petit et accumuler. J'ai un exemple en cours d'exécution qui a un serveur et un client se connectent, et puis le serveur envoie l'heure actuelle au client.

Maintenant, je veux faire en sorte que le serveur peut gérer plusieurs clients.

Comment est-ce que je peux faire ceci? Je pense que je pourrais utiliser la fourchette, mais y a-t-il un moyen de le faire sans avoir de multiples processus à s'inquiéter?

Y a-t-il de bonnes amorces sur ce genre de chose, ou pourriez-vous fournir des instructions sur la façon de modifier mon code existant?

Merci,

+0

Consultez le [Guide de Beej pour la programmation réseau] (http://beej.us/guide/bgnet/). – s4y

+0

Voir aussi http://stackoverflow.com/questions/3981566/what-is-event-driven-web-server/3982440#3982440 pour quelques alternatives de comment faire ceci. – ninjalj

Répondre

1

je recommande l'utilisation de fils:

  • fil Un serveur a le seul but d'écoute à la prise de serveur pour les connexions entrantes. Une fois qu'une connexion est reçue, elle est transmise à un thread de travail, pendant que le serveur continue à écouter.
  • Un ou plusieurs threads de travail. Ces discussions feront la majorité du travail. Vous pouvez choisir d'utiliser un thread par socket ou vous pouvez utiliser la fonction select pour permettre à un thread de gérer plusieurs socket.

Je ne connais pas d'amorces du haut de ma tête, désolé.

3

glibc Manual a un bel exemple. Les bits de code manquants peuvent être trouvés plus tôt dans le chapitre. La bonne chose à propos de l'exemple est que vous n'avez pas besoin de plusieurs threads

+0

+1 pour 'select()'. –

0

Jetez un coup d'œil à la réponse d'Erik au this other question. Vous n'avez pas vraiment besoin de faire du multithreading.