paralleler server mit onc rpc's
-
ich moechte eine client-server anwendung schreiben,
die rpc's zur kommunikation benutzt.
(das rpcgen tool hat die version 1.1; os: debian linux)
mein problem ist nun, dass ich nicht weiss wie ich einen
parallelen server schreiben kann.
mit rpcgen bekomme ich immer nur servercode fuer einen "einfachen"
(nicht-parallelen :)) server.ich habe mich schon durch verschiedene internet seiten gewuehlt, aber
das einzige, was ich herausbekommen habe ist, dass ich eine eigene
rpc_run prozedur schreiben muss.
allerdings weiss ich nicht wie ich anfangen soll...
ich weiss zwar wie ich einen parallelen server schreiben kann,
aber nicht wie ich das in verbindung mit den rpc's setzten kann.hat irgendjemand einen beispielcode, oder ein gutes online tutorial
fuer mich :)?
-
Hi.
Ist sowas nicht eher sache von fork() oder pthread_create?
Stellt PRC nicht nur ein mittel zur Kommunikation dar? Glaube kaum, dass es eine adequate Funktion für deine Ansprüche gibt.Ich würde einfach forken was das Zeug hält.
-
genau da faengt das problem ja an.
das rpcgen tool generiert die benoetigten funktionen zur kommunikation
des servers und clients.
die server main routine benutzt select um auf eingehende verbindungen
zu akzeptieren/darauf zu warten.
wenn ich jetzt forke gibts ein "durcheinander":
der hauptprozess wartet mit hilfe von select auf neue verbindungen.
waehrend dessen kommunizieren client und der server kind prozess mit-
einnander. da der server-kind prozess den selben file-descriptor
nutzt, "denkt" der server-hauptprozess eine neue verbindung steht an,
und erzeugt wieder einen neuen kind-prozess... .
ich habe versucht das select durch ein accept zu ersetzten; was aber nicht
funzt, der server nimmt keinen verbindungen an.unter solaris gibt es die moeglichkeit mittels rpcgen automatisch
einen multi-threaded server generieren zu lassen.
das linux rpcgen bietet diese moeglichkeit nicht.
-
hallo, sry dass ich diesen uralten thread hier wieder auskram. aber ich steh grade genau vor dem selben problem, ich vermute stark dass der aufgabensteller sogar der selbe ist
ich hab nun gelesen dass es für solaris die rpcgen option -A gibt, die genau dies tut, leider ist diese option in der linux version nicht vorhanden....
ich hoffe einfach mal dass jemand in den 6 jahren eine lösung gefunden hat