socketproblem
-
ich habe einen server und einen clienten. mit dem server klappt alles, doch wenn ich mit dem clienten in der zeile:
addr.sin_addr.s_addr=inet_addr("127.0.0.1");
zb eine internet ip angebe, dann hört er nach der ausgabe von:
"socket erstellt"auf zu arbeiten
der code:
#include <windows.h> #include <winsock2.h> #include <stdio.h> //Prototypen int startWinsock(void); int main() { long rc; SOCKET s; SOCKADDR_IN addr; char buf[256]; // Winsock starten rc=startWinsock(); if(rc!=0) { printf("Fehler: startWinsock, fehler code: %d\n",rc); return 1; } else { printf("Winsock gestartet!\n"); } // Socket erstellen s=socket(AF_INET,SOCK_STREAM,0); if(s==INVALID_SOCKET) { printf("Fehler: Der Socket konnte nicht erstellt werden, fehler code: %d\n",WSAGetLastError()); return 1; } else { printf("Socket erstellt!\n"); } // Verbinden memset(&addr,0,sizeof(SOCKADDR_IN)); // zuerst alles auf 0 setzten addr.sin_family=AF_INET; addr.sin_port=htons(54813); // wir verwenden mal port 12345 addr.sin_addr.s_addr=inet_addr("84.178.193.215"); // zielrechner ist unser eigener rc=connect(s,(SOCKADDR*)&addr,sizeof(SOCKADDR)); if(rc==SOCKET_ERROR) { printf("Fehler: connect gescheitert, fehler code: %d\n",WSAGetLastError()); return 1; } else { printf("Verbunden mit 127.0.0.1..\n"); } // Daten austauschen while(rc!=SOCKET_ERROR) { printf("\nZeichenfolge eingeben [max 256]: "); gets(buf); send(s,buf,strlen(buf),0); rc=recv(s,buf,256,0); if(rc==0) { printf("Server hat die Verbindung getrennt..\n"); break; } if(rc==SOCKET_ERROR) { printf("Fehler: recv, fehler code: %d\n",WSAGetLastError()); break; } buf[rc]='\0'; printf("\nServer antwortet: %s\n",buf); } closesocket(s); WSACleanup(); return 0; } int startWinsock(void) { WSADATA wsa; return WSAStartup(MAKEWORD(2,0),&wsa); }
danke für jede hilfe
-
Danach käme das Verbinden, wo es wohl hängenbleibt.
1. Firewall ausschalten
2. Router konfigurieren
3. Adresse&Port checken
-
Dieser Thread wurde von Moderator/in evilissimo aus dem Forum C++ in das Forum Rund um die Programmierung verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
hm du wirst es nich glauben aber nach 15maligem ausprobieren ist dieses problem fast ausgeschlossen
-
Wenn ich das so lese
joseph_müller schrieb:
addr.sin_addr.s_addr=inet_addr("84.178.193.215"); // zielrechner ist unser eigener
nehme ich an, Du gehst über 'nen Router ins Internet, und 84.178.193.215 ist die externe IP desselben?!?
Falls ja: DAS KLAPPT NICHT!!!
Der Router jagt keine Pakete, die offensichtlich für "draussen" bestimmt sind, über die NIC raus um sie gleich wieder in Empfang zu nehmen. Bzw. der nächste Router (Telekom, Arcor, ...) denkt sich "Du hast sie wohl nicht alle!" und wirft das Paket in den Müll (/dev/null).
Achja: Dafür braucht's gar keinen echten Router. Auch wenn Dein Rechner sich direkt einwählt klappt sowas nicht.