Harry-Dirty Geschrieben 13. Dezember 2002 Geschrieben 13. Dezember 2002 Hallo an alle versuche folgende Aufgabe zu lösen, benötige von euch etwas Hilfe! Ausgangssituation: z.B. 3 Clients ; mind. 2 Server (Server sind auf einem gemeinsamen Rechner); 1) Server 1 stellt seinen Diest über TCP/IP im Netz bereit. 2) Client 1 meldet sich bei Server 1 über TCP/IP an, er fragt nach dem Datenpaket 'XY'. Server 1 schickt eine Bestätigung an Client 1 das die Anfrage angekommen ist jedoch das Paket 'XY' nicht vorhanden ist. 3) Nun soll Server 1 an Client 1 einen (sagen wir) IMPULS, Nachricht oder irgendetwas) über "UDP" schicken, mit dem Client 1 erkennen kann das sein Datenpaket zur Verfügung steht um es dann neu anzufordern. Frage: Gibt es soetwas wie eine 'pipe', aber ebend fürs Netz, die ich über UDP vom Server zum Client losschicken kann? Muss der Client hier eine Serverstellung einnehmen um eine UDP Mitteilung vom Server zu erhalten? und wenn ja, muss ich einen neuen Socket auf dem Client für den Empfang erstellen? Wenn ein neuer Socket: kann dieser vom Client dynamisch erstellt werden?, also einen freien Port alleine ermitteln? Dank im Vorraus für eure Hilfe Gruß Harry Zitieren
nic_power Geschrieben 14. Dezember 2002 Geschrieben 14. Dezember 2002 Originally posted by Harry-Dirty Frage: 1. Gibt es soetwas wie eine 'pipe', aber ebend fürs Netz, die ich über UDP vom Server zum Client losschicken kann? 2. Muss der Client hier eine Serverstellung einnehmen um eine UDP Mitteilung vom Server zu erhalten? 3. und wenn ja, muss ich einen neuen Socket auf dem Client für den Empfang erstellen? 4. Wenn ein neuer Socket: kann dieser vom Client dynamisch erstellt werden?, also einen freien Port alleine ermitteln? Dank im Vorraus für eure Hilfe Gruß Harry Zu 1: Es gibt diverse Hilfsprogramme (netcat oder auch perl-skrtipte) die es Dir erlauben, ohne C-Programmierung Daten uebers Netz zu versenden. Zu 2: Im Prinzip Ja. Die Client muss auf einem bestimmten Port lauschen, um das Paket empfangen zu koennen (und der Server muss die Port Nummer kennen). Die Namensgebung ist dabei wohl etwas eine Geschmackfrage, der Server ist der "Diensterbringer". Zu 3. Ja. Zu 4. Ja, aber Server und Client muessen den selben Port verwenden (der Server muss das Paket an den korrekten Client-Port schicken). Nic Zitieren
Harry-Dirty Geschrieben 15. Dezember 2002 Autor Geschrieben 15. Dezember 2002 hallo Nic Dank dir für die ersten Lösungsansätze!! Folgende Unklarheite habe ich noch zu Antwort 1: Ich muss den kompletten Quelltext in C schreiben, so das er auf Linux läuft. Ich weiß also nicht ob ich deinen Lösungsansatz(netcat oder auch perl-skripte) zu '1' in C umsetzten kann. Vielleicht kennst du eine Funktion in C , die dies umsetzt? Wenn doch, wäre ein Tipp, wo ich die Skripte nachlesen kann, sehr wertvoll, da ich mit solchen Skripten noch nicht gearbeitet habe. Zu Antwort 4 : Ich muss davon ausgehen das der Client und Server beim ersten mal eine TCP Verbindung haben. Beim Client kann ich vorher schon einen UDP Socket eingerichten. Nun muss ich dem Server ja diesen Socket ihrendwie mitschicken, damit er den Zusammenhang kennt. Wie muss die Syntax bei diesem Befehl aussehen, das der Server den UDP-Socket(Port) vom Client auch akzeptiert?. Kann der Client die UDP Daten beim ersten mal mit der sent()-Funktion mitschicken? Beachten muss ich, dass der UDP-Socket nur zum senden eines ?Impulses? vom Server(Dienstbringer) genutz werden soll. Der Client nutzt ihn nur zum empfang, er selbst sendet darüber nicht! Dank im vorraus für die Hilfe Gruß Harry Zitieren
nic_power Geschrieben 15. Dezember 2002 Geschrieben 15. Dezember 2002 Hallo, Prinzipiell kannst Du jede beliebige Programmiersprache nehmen, die ueber eine Socket-Schnittstelle verfuegt (perl gehoert beispielsweise dazu). Wenn es unbedingt C sein muss, schau Dir mal den folgenden URL an: http://www.ecst.csuchico.edu/~beej/guide/net/html/clientserver.html Dort findest Du Beispiele fuer TCP und UDP basierte Socket-Kommunikation. Um die Port-Nummern zu ermitteln gibt es mehrere Moeglichkeiten. Eine hattest Du schon genannt (die Uebertragung des Ports ueber die TCP-Verbindung). Alternativ kannst Du auch feste Ports auf Client und Server-Seite verwenden (und diese beispielsweise in /etc/services eintragen oder ueber eine Konfigurationsdatei einlesen). Nic Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.