String kommt falsch an
-
du hast du vielleicht icq oder msn >.<? wäre super
-
Socket198 schrieb:
ok danke das heißt du meinst das es nur nicht ging weil der port 12345 wegen trojaner gesperrt ist oder es an seinen einstellungne lag?
Kann ich den jeden beliebigen port nehmen außer 12345 ?Und was war vorhin das problem? Dachtest du ich will vom server eine verbindung zum client aufnehmen?
Nein, es war einfach ein Misverständnis. Ich weiß schon gar nicht mehr wie es dazu kam

Naja eigentlich ist an Port 12345 nichts schlimmes, aber der wird halt viel benutzt, eben auch von Trojanern. Daher kann ich mir gut vorstellen, dass der standardmäßig erstmal blockiert wird.
Der Port war auf jeden Fall wegen seinem Router gesperrt, warum kann ich dir nicht sagen, ich kenne weder seinen Router noch dessen Konfiguration.
-
ich habe jetz nochma mit dem 43076 probiert bei nem anderen funktioniert aber auch nicht hast du icq?
-
also hier nochmal der Code:
Client:#include <windows.h> int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstnace, PSTR szCmdLine, int iCmdShow) { WSADATA wsa; WSAStartup(MAKEWORD(2, 0), &wsa); SOCKET s; s = socket(AF_INET, SOCK_STREAM, 0); SOCKADDR_IN addr; memset(&addr, 0, sizeof(SOCKADDR_IN)); addr.sin_family = AF_INET; addr.sin_port = htons(43076); addr.sin_addr.s_addr=inet_addr("84.153.243.151"); // meine ip connect(s, (SOCKADDR*)&addr, sizeof(SOCKADDR)); char buf[256]; strcpy(buf,"Hallo wie gehts?omg"); Sleep(5000); send(s, buf, 20, 0); return 0; }Server:
#include <windows.h> int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstnace, PSTR szCmdLine, int iCmdShow) { WSADATA wsa; if(WSAStartup(MAKEWORD(2, 0), &wsa) == 0) MessageBox(0, TEXT("Winsock 2 gestartet!"), TEXT("INFO"), 0); SOCKET acceptSocket; acceptSocket = socket(AF_INET, SOCK_STREAM, 0); if(!(acceptSocket == INVALID_SOCKET)) MessageBox(0, TEXT("Socket erstellt"), TEXT("INFO"), 0); SOCKADDR_IN addr; memset(&addr,0,sizeof(SOCKADDR_IN)); addr.sin_family=AF_INET; addr.sin_port=htons(43076); addr.sin_addr.s_addr = INADDR_ANY; if(!(bind(acceptSocket,(SOCKADDR*)&addr,sizeof(SOCKADDR_IN)) == SOCKET_ERROR)) MessageBox(0, TEXT("BIND HAT GEKLAPPT!"), TEXT("INFO"), 0); if(!(listen(acceptSocket, 10) == SOCKET_ERROR)) MessageBox(0, TEXT("LISTEN HAT GEKLAPPT!"), TEXT("INFO"), 0); SOCKET connectedSocket; connectedSocket=accept(acceptSocket,NULL,NULL); if(!(connectedSocket==INVALID_SOCKET)) MessageBox(0, TEXT("ACCEPT HAT GEKLAPPT!"), TEXT("INFO"), 0); char buf[256]; recv(connectedSocket, buf, 256, 0); MessageBox(0, buf, TEXT("Vom Client gesendet"), 0); return 0; }Wenn ich bei der ip 127.0.0.1 also meinen rechner angebe funktioniert es aber wenn ich den clienten verschicke an andere dann reagiert der server überhaupt nicht.
-
also natürlich ohne irgendwas beim port zu machen
-
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.
-
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.