WinSock Problem Client kann nicht mehr connecten



  • Hallo, ich wollte eben an meinem Winsock Projekt weitermachen aber komischerweise kann mein Client nicht mehr connecten. Gestern ging alles ohne Probleme und heute scheint es so zu sein als würde es nicht mehr funktionieren.
    Im Lan Mode funktioniert alles dort gibt es keine Probleme.

    Die Ports sind im Router und in der Firewall freigegeben.
    connect gibt immer folgenden Fehlermeldung:

    http://msdn.microsoft.com/de-de/library/windows/desktop/ms681391(v=vs.85).aspx
    WSAETIMEDOUT
    10060 (0x274C)
    A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.
    

    Dort hab ich jetzt absichtlich nur "MeineIp" geschrieben.
    sin.sin_addr.s_addr = inet_addr("MeineIp");

    Client

    // client.cpp : Definiert den Einstiegspunkt für die Konsolenanwendung.
    //
    
    #include "stdafx.h"
    
    void SendDataToServer(string data);
    
    int main()
    {
    	SendDataToServer("OK\r");
    
    	return 0;
    }
    //---------------------------------------------------------------------------
    
    void SendDataToServer(string data)
    {
    
    	SOCKET sock;
    	WSAData wsdata;
    
    	if (WSAStartup(MAKEWORD(2, 2), &wsdata) != 0)
    	{
    		cout << "Fehler! error code: " << GetLastError() << endl;
    		return;
    	}
    
    	sock = socket(AF_INET, SOCK_STREAM, 0);
    
    	sockaddr_in sin;
    	sin.sin_port = htons(27015);
    	sin.sin_addr.s_addr = inet_addr("MeineIp");    
    	sin.sin_family = AF_INET;
    
    	if (connect(sock, (sockaddr*)&sin, sizeof(sin)) == SOCKET_ERROR)
    	{
    		cout << "Fehler! error code: " << dec << WSAGetLastError() << endl;
    
    		system("PAUSE");
    		closesocket(sock);
    		WSACleanup();
    		return;
    	}
    
    	int i = -1;
    	do
    	{
    		i++;
    		send(sock, &data[i], 1, 0);
    	} while (data[i] != '\r');
    
    	system("PAUSE");
    
    }
    

    Server

    // ConsoleApplication1.cpp : Definiert den Einstiegspunkt für die Konsolenanwendung.
    //
    
    #include "stdafx.h"
    void ReceiveData(SOCKET client, string &data);
    
    int main()
    {
    
    	SOCKET serverSocket;
    	WSAData wsdata;
    	WORD wsver = MAKEWORD(2, 0);
    
    	if (WSAStartup(wsver, &wsdata) != 0)
    	{
    		cout << "Startup error, error code: " << GetLastError() << "\n";
    		WSACleanup();
    		return 0;
    	}
    
    	serverSocket = socket(AF_INET, SOCK_STREAM, 0);
    
    	if (serverSocket == INVALID_SOCKET)
    	{
    		cout << "Socket init error, error code: " << GetLastError() << "\n";
    		return -1;
    	}
    
    	sockaddr_in sin;
    	sin.sin_port = htons(27015);
    	sin.sin_addr.s_addr = INADDR_ANY;
    	sin.sin_family = AF_INET;
    
    	if (bind(serverSocket, (sockaddr*)&sin, sizeof(sin)) == SOCKET_ERROR)
    	{
    		cout << "bind error, error code: " << GetLastError() << "\n";
    		WSACleanup();
    		return 0;
    	}
    
    	if (listen(serverSocket, SOMAXCONN) == SOCKET_ERROR)
    	{
    		cout << "listen error, error code: " << GetLastError() << "\n";
    		return 0;
    	}
    
    	cout << "Server is waiting for a client ...\n";
    
    	serverSocket = accept(serverSocket, NULL, NULL);
    	if (serverSocket == INVALID_SOCKET)
    	{
    		cout << "accept error, error code: <<" << WSAGetLastError() << "\n";
    		return 0;
    	}
    
    	cout << "New connection has been established ...\n";
    
    	string data;
    	ReceiveData(serverSocket, data);
    	ofstream file("data.txt", ios::app);
    	file.write(data.c_str(), data.length());
    
    	system("PAUSE");
    
    	closesocket(serverSocket);
    	WSACleanup();
    	return 0;
    }
    
    void ReceiveData(SOCKET serverSocket, string &data)
    {
    	char buf;
    	int receivedBytes = 0;
    	do
    	{
    		receivedBytes = recv(serverSocket, &buf, 1, 0);
    		data += buf;
    	} while (buf != '\r' && receivedBytes != SOCKET_ERROR);
    }
    


  • OMG mit Netcat geht es auch nicht ....

    Falls wer von euch Netcat kennt:

    Netcat in listen mode versetzen:
    nc -l -s 192.168.178.60 -p 27015 -n -v

    Auf Server in diesem Fall Netcat zugreiffen.
    nc -v MeineIp 27015

    Mit Netcat bekomme ich auch ein Timeout ich glaub an meinem Code liegt das nicht jetzt hab ich den Kram schon extra auf meinem Notebook ausprobiert wo Windows ganz neu installiert ist ohne irgendwelchen Anti Viren Kram und die Windows Firewall hab ich auch deaktiviert.

    Hier ist die FritzBox Einstellung zu sehen:
    http://www11.pic-upload.de/27.06.14/onmkm3o6iv75.png

    Mache ich hier irgendwo einen dummen Fehler den ich gerade nicht sehe oder so?
    Ich glaub die scheiss FritzBox trollt mich. 😡



  • Funktioniert es denn im internen Netz?
    Compilierst du dein Programm jedesmal neu, wenn sich deine IP ändert?



  • Ja, im internen Netzwerk funktioniert alles.
    Meine Internet IP habe ich von dieser Seite: http://www.wieistmeineip.de
    Die hat sich auch seit gestern nicht geändert.



  • Bist du evtl. bei einem Kabelanbieter der DS-Lite nutzt und wo echtes IPv4 quasi nicht vorhanden ist?



  • Ich bin bei 1&1 ka ob die da dieses DS-Lite nutzen.
    Aber gestern funktionierte es ja. o_O



  • Verwende konsequent Version Winsock 2.

    WSAStartup(MAKEWORD(2, 2), &wsdata);
    

    Beim Serverteil verwendest du 2.0?



  • Sorry für das gespam.. sollst konsequent 2.2 verwenden. Oben habe ich aus versehen 2.0 geschrieben.



  • winSock- schrieb:

    Meine Internet IP habe ich von dieser Seite: http://www.wieistmeineip.de
    Die hat sich auch seit gestern nicht geändert.

    Schau auf der Startseite der Fritzbox nach.
    Dann weißt du des genau.



  • lowbyte__ schrieb:

    Verwende konsequent Version Winsock 2.

    WSAStartup(MAKEWORD(2, 2), &wsdata);
    

    Beim Serverteil verwendest du 2.0?

    Daran könnte es liegen muss ich mal testen thx.


Anmelden zum Antworten