Winsock funktioniert nur mit der IP 127.0.0.1



  • Mr.Matze schrieb:

    jaja..Ich hab schon Diktate immer gehasst..

    Zum Thema ja hab ich. Ich hab die Router und die Computer-Firewall deaktiviert und es geht immer noch nicht

    Die entsprechenden Ports bei Router auf deinen Rechner weitergeleitet?



  • Morgen da hab ich auch mal eine Frage zu wie funktioniert das denn z.b. wenn die Ports nicht freigeben sind ?

    Weil ICQ z.b. funktioniert ja auch bei mir obwohl ich den Port nicht im Router freigeben habe oder ein anderes beispiel Team Viewer da muss man ja auch nichts freigeben.



  • http://www.heise.de/security/Wie-Skype-Co-Firewalls-umgehen--/artikel/82054

    (Icq macht das allerdings glaube ich nicht so, da laufen die Daten glaube ich notfalls über den icq-server)



  • Ich habe alle Ports freiggeschalten, und auch testweise jede Firewall und Virenscanner deaktiviert und trotzdem läuft es nicht über die Standart IP. Wo könnte man denn Fehler, bei soetwas machen?



  • Wie sieht denn dein Code um listen() rum aus?
    Lauscht du vllt. nur lokal?



  • bool CWinSock::Listen( void )
    {
    	rc=listen(s,10);
    
    	if(rc==SOCKET_ERROR)
    
    	{
    
    	  printf("Fehler: listen, fehler code: %d\n",WSAGetLastError());
    
    	  return 1;
    
    	}
    
    	else
    
    	{
    
    	  printf("Der Socket ist im listen Modus....\n"); 
    
    	}
    
    }
    
    void CWinSock::Accept( void )
    {
    	connectedSocket=accept(s,NULL,NULL);
    
    	if(connectedSocket==INVALID_SOCKET)
    
    	{
    
    	  printf("Fehler: accept, fehler code: %d\n",WSAGetLastError());
    
    	}
    	else
    	{
    
    	  printf("Neue Verbindung wurde akzeptiert!\n");
    
    	  sprintf(buf,"blubb");
    	  rc=send(connectedSocket,buf,strlen(buf),0);
    	  printf("%d",rc); //!Notiz! Anpassen
    
    	}
    
    }
    

    Hmm ich glaube es liegt nicht am Listen, da es ja weder über UDP noch über TCP geht und man Listen ja nur für TCP braucht. Ich hab's jetzt nochmal auf einem anderen Rechner ( mit anderem Provider )ausprobiert und da geht es auch nicht.



  • Die interessantere Stelle wäre auch das bind gewesen 😉



  • bool CWinSock::Bind( short int Port )
    {
    
            m_Port = Port;
    	memset(&addr,0,sizeof(SOCKADDR_IN));
    
    	addr.sin_family=AF_INET;
    
    	addr.sin_port=htons(Port);
    
    	addr.sin_addr.s_addr=ADDR_ANY;
    
    	rc=bind(s,(SOCKADDR*)&addr,sizeof(SOCKADDR_IN));
    
    	if(rc==SOCKET_ERROR)
    
    	{
    
    	  printf("Fehler: bind, fehler code: %d\n",WSAGetLastError());
    
    	  return false;
    
    	}
    
    	else
    
    	{
    
    	  printf("Socket an Port %d gebunden\n",Port);
    
    	}
    
    	return true;
    }
    

    Hab's beim Kopieren vergessen xD



  • Es reicht afaik nicht, beim Router die Ports zu öffnen. Du musst sie forwarden um den Rechner zu erreichen.
    Schau dir mal bei Wikipedia den Eintrag zum Thema Router an...



  • Ich hab ja wie gesagt alle Firewalls deaktiviert, da geht ja alles raus und rein was will und im Prinzip ist jeder Port durchgängig.



  • Mr.Matze schrieb:

    Ich hab ja wie gesagt alle Firewalls deaktiviert, da geht ja alles raus und rein was will und im Prinzip ist jeder Port durchgängig.

    Nein. Ein Router ist dazu da zwei Netze zu verbinden. D.h. eine Anfrage von aussen wird an die PublicIP deines Anschlusses gestellt. Diese IP hat dein PC aber nicht. Dein PC hat eine IP aus einem anderen Netz, meist 192.168.0.irgendwas..
    Und um den PC von aussen zu erreichen musst du dem Router sagen, dass er bestimmte Anfragen (UDP, HTTP, wasweißich) an genau den PC mit der bestimmten IP in deinem privaten Netz weiterleiten soll.
    Darum reicht es nicht, die Firewall zu deaktivieren. Der Router blockt zwar nix, aber leitet es auch nicht weiter...

    Lies dir mal ein wenig was über die Funktionsweise und den Sinn eines Routers durch. Router != Firewall 😉


Anmelden zum Antworten