Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » GNU/Linux » Server & Client in einem Programm

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
09.05.2003, 08:34 Uhr
~arkantos
Gast


hallo leute, ich möchte in einem Programm einen ServerSocket, und einen dazugehörenden ClientSocket schaffen.

aber des geht ja net, weil der server ja im hintergrund auf eine anfrage vom client warten soll.

geht des mit fork? wenn ja, wie?

grüße arkantos
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
09.05.2003, 10:35 Uhr
virtual
Sexiest Bit alive
(Operator)


Willst Du quasi ein Programm starten, welches Primär Client ist und dann bei bedarf den Server startet? - Denn ein Programm, welches sowohl Client alsauch Server Part übernimmt, macht IMHO wenig sinn, dann ist eines von beiden überflüssig...
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
09.05.2003, 10:51 Uhr
~arkantos
Gast


ich muss eine schnittstelle testen, und am anfang soll zuerst aus einem Programm ein Serversocket einem clientsocket was schicken. Danach wird des nach außen erweitert. Wie mache ich des mit fork? Weil der Server muss ja im Hintergrund schon gleichzeitig neben dem Client laufen??
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
09.05.2003, 12:50 Uhr
virtual
Sexiest Bit alive
(Operator)


Grobe skizze fürs fork:

C++:
pid_t child;

child = fork()
if (child<0)
{
      /* Fork ging schief */
      perror("fork");
      exit(1);
}else if (child==0)
{
       /* Okay, wir sind im child process. Normalerweise wird man nun
           hier den Code für den eigentlichen Serverteil reinschreiben. */


       /* Üblicherweise macht man den Server nun zum Sessionleader */
       setsid();

       /* Für SVR4 ist empfehlenswert, hier abermals zu forken, um  
           zu verhindern, daß jemand über ein Terminal Kontrolle über den
           Demon (aka Server) bekommt. */


       /* Gehe in ein Verzeichnis, welches garantiert immer da ist */
       chdir("/");

       /* File create mask zurücksetzen, wer weiß, was davor geschehen
           ist */

       umask(0);

       /* Nicht benötigte Descriptoren schließen */

       /* Eigentliche Arbeit anfangen */
}else
{
       /* Normalerweise läßt man nun den Parent process vom Server
           Kurz und schmerzlos sterben */

       exit(0);
}


--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
09.05.2003, 16:03 Uhr
virtual
Sexiest Bit alive
(Operator)


Hm, ach ja, nur so eine Idee: Im Code vom Server könntest Du natürlich jetzt mit einer der exec* Routinen das eigentliche Serverprogramm ausführen (wenn es ein getrenntes Binary sein soll. Dieses Serverprogramm sollte natürlich so oder so sicherstellen, daß es allein auf der Welt ist (besser wäre dies natürlich vor dem fork). Und im Clientcode, da wo das exit(0) steht, den Clientcode einfügen. Dann hättest Du einen Client, der den Server automatisch startet, wenn der noch nicht läuft.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
12.05.2003, 08:39 Uhr
~arkantos
Gast


dankeschön, hat geklappt!

grüße arkantos
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ GNU/Linux ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: