String kommt falsch an
-
Belli schrieb:
Muss Dein Freund denn den Port überhaupt an seinem Router freigeben, oder evtl. an seiner Firewall?
Mir wäre nämlich nicht bekannt, daß ein handelsüblicher Router AUSGEHENDE Verbindungen blockt. Von installierten personal Firewalls hingegen ist mir das wohl geläufig.Eben, das meinte ich in meinen vorherigen zwei Posts auch.
@Threadersteller, ja du musst schon die Ports in deinem Router freigeben, da du den Server laufen hast und der nimmt ja eingehende Verbindungen entgegen.
-
hi,
also bei mir sind die Ports frei bei meinem Kumpel nicht.
hat wer von euch icq damit ich es mit wem testen kann der sich auskennt?
(und weiß das er keine personal firewall hat)?
-
ich werde doch beim clienten nicht die falsche ip eingetragen haben?
Ich habe die von wieistmeineip.de genommen aber die ändert sich von tag zu tag
-
Deine IP ändert sich mit jeder Einwahl ins INet! Aber das Problem einer geänderten IP könnte man auch nicht durch Portfreigabe beseitigen.
Leider hast Du meine Frage nicht beantwortet:
Wo bzw. wie genau muß Dein Freund einen Port freigeben?Ich glaube übrigens nicht, daß Du hier jemanden findest, der sich Deinen Client auf den Rechner lädt und dann eine Verbindung zu Deinem Server aufbauen möchte ...
-
also mein freund muss tcp 43076 freigeben(den benutzt ja der quellcode)
-
Socket197 schrieb:
also mein freund muss tcp 43076 freigeben(den benutzt ja der quellcode)
Dein Freund soll mal in der Konsole "telnet <deine-ip> 43076" eingeben und schauen ob er sich auf den Port verbinden kann.
-
nein kann er nicht verbindung nicht möglich
-
also ich hab jetzt nochmal alles neu gemacht und siehe da es hat geklappt!
Hier der Client:#include <windows.h> #include <iostream> using namespace std; int main() { WSADATA wsa; cout << "Socket Client" << endl; if(WSAStartup(MAKEWORD(2,0), &wsa) == 0) cout << "Winsock gestartet" << endl; else{ cout << "Winsock konnte nicht gestartet werden" << endl; system("PAUSE"); return 1; } SOCKET s; s = socket(AF_INET, SOCK_STREAM, 0); if(s == INVALID_SOCKET) { cout << "Socket konnte nicht erstellt werden. Fehler: " << WSAGetLastError() << endl; system("PAUSE"); return 1; } else cout << "Socket erstellt" << endl; SOCKADDR_IN addr; const char* ip = "84.153.219.174"; memset(&addr,0,sizeof(SOCKADDR_IN)); // zuerst alles auf 0 setzten addr.sin_family=AF_INET; addr.sin_port=htons(40791); // wir verwenden mal port 12345 addr.sin_addr.s_addr=inet_addr(ip); // zielrechner ist unser eigener if(connect(s,(SOCKADDR*)&addr,sizeof(SOCKADDR)) == SOCKET_ERROR) { cout << "Connect nicht erfolgreich. Hier der Fehler: " << WSAGetLastError() << endl; system("PAUSE"); return 1; } else cout << "Verbunden mit " << ip << endl; char buf[256]; long rc; strcpy(buf,"Hallo wie gehts?"); rc=send(s, buf, 17, 0); if(rc == SOCKET_ERROR) cout << "Send hat nicht geklappt: " << WSAGetLastError() << endl; else if(rc == 0) cout << "Der Partner hat die Verbindung unterbrochen" << endl; else cout << "Senden erfolgreich" << endl; system("PAUSE"); return 0; }Und hier der Server:
#include <windows.h> #include <iostream> using namespace std; int main() { WSADATA wsa; cout << "Socket Server" << endl; if(WSAStartup(MAKEWORD(2,0), &wsa) == 0) cout << "Winsock gestartet" << endl; else{ cout << "Winsock konnte nicht gestartet werden" << endl; system("PAUSE"); return 1; } SOCKET acceptSocket = socket(AF_INET,SOCK_STREAM,0); if(acceptSocket==INVALID_SOCKET) { cout << "Fehler: Der Socket konnte nicht erstellt werden: " << WSAGetLastError() << endl; system("PAUSE"); return 1; } else { cout << "Socket erstellen erfolgreich" << endl; } SOCKADDR_IN addr; memset(&addr,0,sizeof(SOCKADDR_IN)); addr.sin_family=AF_INET; addr.sin_port=htons(40791); addr.sin_addr.s_addr=INADDR_ANY; if(bind(acceptSocket,(SOCKADDR*)&addr,sizeof(SOCKADDR_IN)) == SOCKET_ERROR) { cout << "Fehler bei bind: " << WSAGetLastError() << endl; system("PAUSE"); return 1; } else cout << "Bind hat geklappt" << endl; if(listen(acceptSocket,10)==SOCKET_ERROR) { cout << "Fehler: listen: " << WSAGetLastError() << endl; system("PAUSE"); return 1; } else cout << "Listen geklappt" << endl; SOCKET connectedSocket; connectedSocket=accept(acceptSocket,NULL,NULL); if(connectedSocket==INVALID_SOCKET) { cout << "Fehler: accept: " << WSAGetLastError() << endl; system("PAUSE"); return 1; } else cout << "Verbindung akzeptiert" << endl; char buf[256]; long rc; rc=recv(connectedSocket, buf, 256, 0); if(rc == 0) cout << "Die Verbindung wurde unterbrochen" << endl; else if(rc == SOCKET_ERROR) cout << "Fehler beim Empfangen: " << WSAGetLastError() << endl; else cout << "Erfolgreich Empfangen! Hier der Text" << endl << buf << endl; system("PAUSE"); return 0; }Das ausschlaggebende war aber das ich den Port falsch freigeschaltet habe.
Beim freischalten muss man den port an der IP 192.168.178.25 freischalten.
Den hat fritzbox zufällig da reingeschrieben.
Weiß wer was diese addresse bedeutet oder warum es die sein muss?
Ich hab immer die von wieistmeineip.de genommen oO
-
Das ist deine Netzwerk-IP, die von meineip.de ist die, die dir dein Provider zuweist, bzw. deinem Router.
Du solltest dir erst einmal grundlegende Netzwerkkenntnisse aneignen bevor du eigene Netzwerkanwendungen programmieren willst
-
bei c worker tuts ist das ganz letzte tutorial ja eins über raw sockets.
benutzt man die oder brauch ich das nicht machen? ist überflüssig oder
-
und noch ne frage
ich habe das 2. tutorial auch gemacht da geht es um den hostnamen auflösen
ich hab das gemacht und als ip 192.xxx.xxx.25 also meine übergeben
aber dann funktioniert es nicht wenn ich die exe zu wem schicke.
Für was ist das auflösen gut?
-
noch mal ne Aktualiesierung:
Also es funktioniert doch nur das Problem war das die 2 ne Firewall hatten die das blockt ohne nachzufragen. kann man da was tun?Und diese frage ist noch aktuell:
bei c worker tuts ist das ganz letzte tutorial ja eins über raw sockets.
benutzt man die oder brauch ich das nicht machen? ist überflüssig oder
-
jetzt bekommen manche Leute die den Client ausführen
if(connect(s,(SOCKADDR*)&addr,sizeof(SOCKADDR)) == SOCKET_ERROR) { cout << "Connect nicht erfolgreich. Hier der Fehler: " << WSAGetLastError() << endl; system("PAUSE"); return 1; }Den error Code 10060
warum geht das nicht ?
Gestern ging es noch
-
Klar benutzt man Raw-Sockets, aber nicht für das Alltagsgeschäft.
Du kannst sie zum Beispiel benutzen um deinen eigenen TCP/IP Stack zu implementieren.
-
nen freund hat mir erzählt das man die nicht so oft benutzt sondern eher direkt über TCP und UDP arbeitet. Sie haben keine großen vorteile gegenüber anderen oder?
-
Socket179 schrieb:
nen freund hat mir erzählt das man die nicht so oft benutzt sondern eher direkt über TCP und UDP arbeitet. Sie haben keine großen vorteile gegenüber anderen oder?
Vorteile? Kommt auf die Situation an, wenn du weder TCP noch UDP nutzen willst, dann sind TCP oder UDP Sockets natürlich ungeeignet und für solche Fälle gibt es die RAW Sockets.
Die RAW Sockets werden sowieso gebraucht für die TCP und UDP Sockets die dir dein Betriebssystem zur Verfügung stellt.
-
und was bringt das dann diese statt TCP oder UDP sockets zu verwenden
-
Socket179 schrieb:
und was bringt das dann diese statt TCP oder UDP sockets zu verwenden
Ich gebs auf...