Hallo,
ich beschäftige mich momentan mit der Socketprogrammierung unter Windows. Ich habe mich an das Buch "C von A bis Z" sowie "C++ von A bis Z" von Jürgen Wolf gehalten. Dort gibt es ein Beispiel, in dem man vom Client einen String an den Server schickt und dieser den String ausgibt. Nun möchte ich das Programm so abändern, dass der Server den String unverändert wieder zum Client zurückschickt und dieser ihn dann ausgibt. Mit TCP habe ich es hinbekommen, ich brauche das ganze aber mit UDP.
Der funktionierende Code vom Server sieht folgendermaßen aus:
Alles anzeigen
Bisher sind jedoch sämtliche Versuche ihn abzuändern, fehlgeschlagen. Entweder er gibt in einer Endlosschleife den Text aus, ohne ihn zurückzusenden oder das Programm stürzt sofort nach dem Starten ab. Kann ich auch eine send-Funktion nutzen, die kein Argument braucht bzw. der ich ein Argument übergeben kann, in dem die Adresse, wohin er es senden soll, übergeben wird? Wohin die Antwort gehen muss, muss doch irgendwie aus der empfangenen UDP-Nachricht auszulesen sein, oder? Und kann ich auf dem gleichen Socket antworten oder muss ich dafür ein 2. Socket erstellen? Ich hatte mir auch überlegt, im Serverprogramm genauso ein Socket zu erstellen wie im Client:
in argv[1] gebe ich dem Client die IP-Adresse vom Server mit. Allerdings funktioniert das im Server ja nicht, weil der Server ja vor dem Client gestartet wird und ich ja garnicht weiß, wohin ich dann senden soll.
Ich hoffe mein Text ist jetzt nicht zu verwirrend gewesen. Für jegliche Hilfe bin ich jetzt schon mal dankbar.
mfg Matthias
ich beschäftige mich momentan mit der Socketprogrammierung unter Windows. Ich habe mich an das Buch "C von A bis Z" sowie "C++ von A bis Z" von Jürgen Wolf gehalten. Dort gibt es ein Beispiel, in dem man vom Client einen String an den Server schickt und dieser den String ausgibt. Nun möchte ich das Programm so abändern, dass der Server den String unverändert wieder zum Client zurückschickt und dieser ihn dann ausgibt. Mit TCP habe ich es hinbekommen, ich brauche das ganze aber mit UDP.
Der funktionierende Code vom Server sieht folgendermaßen aus:
C-Quellcode
- // udp_echo_server.cpp
- #include "socket.h"
- #include <iostream>
- using namespace std;
- int main() {
- try {
- Socket empfangen;
- empfangen.UDP_create();
- empfangen.bind( 15000 );
- cout << "Server wartet auf Daten ..." << endl;
- try {
- while ( true ) {
- string s;
- empfangen.UDP_recv(s);
- cout << "Daten erhalten: " << s << endl;
- }
- }
- catch ( SockExcept& ) {
- }
- }
- catch (SockExcept& e) {
- cout << "Exception wurde ausgeworfen: "
- << e.get_SockExcept() << endl;
- }
- return 0;
- }
Bisher sind jedoch sämtliche Versuche ihn abzuändern, fehlgeschlagen. Entweder er gibt in einer Endlosschleife den Text aus, ohne ihn zurückzusenden oder das Programm stürzt sofort nach dem Starten ab. Kann ich auch eine send-Funktion nutzen, die kein Argument braucht bzw. der ich ein Argument übergeben kann, in dem die Adresse, wohin er es senden soll, übergeben wird? Wohin die Antwort gehen muss, muss doch irgendwie aus der empfangenen UDP-Nachricht auszulesen sein, oder? Und kann ich auf dem gleichen Socket antworten oder muss ich dafür ein 2. Socket erstellen? Ich hatte mir auch überlegt, im Serverprogramm genauso ein Socket zu erstellen wie im Client:
in argv[1] gebe ich dem Client die IP-Adresse vom Server mit. Allerdings funktioniert das im Server ja nicht, weil der Server ja vor dem Client gestartet wird und ich ja garnicht weiß, wohin ich dann senden soll.
Ich hoffe mein Text ist jetzt nicht zu verwirrend gewesen. Für jegliche Hilfe bin ich jetzt schon mal dankbar.
mfg Matthias
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Matze8426 ()