2014-12-15 6 views
5

Ich habe derzeit einen TCP-Server eingerichtet, der eine Verbindung von einem Client akzeptieren und Echo, was auch immer der Client eingibt. Wie gehe ich vor, wenn mehrere Clients eine Verbindung zum Server herstellen und ihre Eingaben an alle Clients gesendet werden?Wie kann ich mehrere Clients an einen TCP-Server akzeptieren?

Es scheint, ich berappen sollte, aber ich bin nicht ganz sicher, wie ...

Auf dem Server sollte ich eine Endlosschleife platzieren ab akzeptieren (oder hören?), Die Gabel wird, wenn es eine ist neue Verbindung? Im Child-Prozess müsste ich dann den Socket von einem vorherigen Prozess schließen und mich mit dem neuen verbinden, aber ich bin mir wieder nicht ganz sicher.

Wie sieht der Pseudo-Code aus, wenn es nur um die Manipulation von Gabeln und Sockeln geht? Meine Vermutung:

while(1) //before connection or accept? 

pid = fork() 

if(pid==0) 
    // open socket from client 
    // run the rest of the code 
    // end process when client disconnects 
else 
    // close socket from client 

Antwort

0

Schaltet den Pseudo-Code aus wie folgt aussieht:

while(1)  //before listen 

pid = fork; //right after accept 

if(fork>0) 
    close sd2 (sd2 = accept(....)) 
    continue 
else 
    run the rest of the program