PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Spezielle Frage zu einer UDP-Client-Server-Interaktion


Snappy
10.07.2005, 20:36
Hallo Freunde, ich sitze hier an einer UDP-Client-Server-Interaktion und frage mich ob das so funktioniert sieht merkwürdig aus ist aber so gewollt. Frage ist ob man wenn ein connect beim client ist ob beim server nicht recv und send sein muss.Ist eine Klausuraufgabe für mein Studium. Danke für die schnelle Hilfe!


http://www.kastenlauf.info/agai/UDP.jpg


ilute
10.07.2005, 21:00
Ich verstehe deine Frage schon nicht, weil sie, wie sie geschriebe ist, keinen Sinn ergibt.

UDP ist, anders als TCP, nicht wie ein Stream organisiert. WIll jemand etwas senden, dann tut er das und will jemand etwas empfangen, so hoert er, ob etwas gesendet wurde. Senden zieht auf der Gegenseite i.d.R. keine Reaktion zum Senden nach sich, da es wie beim TCP etwa, keine Sicherung, Fenster, und anderes gibt.

gruss

Snappy
10.07.2005, 21:28
hehe und ich verstehe deine antwort nicht...der client ist UDP und der Server auch. Die Frage ist kann hier ein austausch stattfinden durch die unterschiedliche Implementierung?, weil ja eigentlich ein recv beim server stehen müsste wenn beim client ein connect steht. ... Das das Diagramm Hirnlos ist weiß ich auch ... der Prof hat nen schuß aber egal.

Unterschied zwischen recv und recfrom ist klar ... beim letzteren steht die clientadresse mit im aufruf und die braucht man ja eigentlich nicht laut dieser erklärung auf:
http://www.pug.org/index.php/Einf%C3%BChrung_in_die_Netzwerkprogrammierung#T (http://www.pug.org/index.php/Einf%C3%BChrung_in_die_Netzwerkprogrammierung)CP-_und_UDP-Client

Snappy


Ach zwischen recvfrom und sendto bearbeitet der server die anfrage...

butterkeks
10.07.2005, 21:37
wenn das mit dem connect() wirklich so klappt, wie es über der Zeichnung angegeben ist (kenne das persönlich so eigentlich nicht...), dann:

ja, der Server kann dennoch recvfrom() und sendto() benutzen.
Oder was war jetzt im Klartext die Frage?

ilute
10.07.2005, 21:46
Das Diagramm ist zumindest weniger "hirnlos", als deine unverstaendlichen Fragen.


hehe und ich verstehe deine antwort nicht...der client ist UDP und der Server auch. Die Frage ist kann hier ein austausch stattfinden durch die unterschiedliche Implementierung?, weil ja eigentlich ein recv beim server stehen müsste wenn beim client ein connect steht. ... Das das Diagramm Hirnlos ist weiß ich auch ... der Prof hat nen schuß aber egal.


Bei UDP gibt es keine Verbindungen. Du kannst dir einen Socket erstellen und mit sendto, recvfrom an beliebige Adressen senden, oder entsprechend empfangen. connect() legt den Socket so fest, dass nur von einer Adressen empfangen werden kann und auch nur an diese gesendet werden kann. Das hier recv und write verwendet wird in kein Problem, da unter unices die Implementierung von sockets teilweise einheitlich (auf anwendungsebene) mit der von file descriptors ist.

Ich verstehe also dein Problem schlicht nicht.

ps. auf deiner Seite steht lediglich, dass du die Adresse bei einem recv weglassen kannst, wenn du vorher ein connect() ausgefuehrt hast.

gruss