datei senden



  • hallo,
    ich habe ein Problem:
    ich versende folgendermaßen alle 10 sekunden eine datei:

    ifstream file(szScreenName, ios::binary );
    	file.seekg( 0, ios::end );
    	unsigned length = file.tellg();
    	file.seekg( 0, ios::beg );
    	char *buffer = new char[length];
    	file.read( &buffer[0], length );
    	// und ab damit
    	if(send(s, (const char*)&length, sizeof(length), 0) == SOCKET_ERROR)
    	{
    		MessageBox(0, TEXT("Konnte die Länge nicht senden!"), szAppName, MB_ICONERROR);
    		return 1;
    	}
    	if(send(s, &buffer[0], length, 0) == SOCKET_ERROR)
    	{
    		MessageBox(0, TEXT("Konnte Datei nicht senden!"), szAppName, MB_ICONERROR);
    		return 1;
    	}
    	return 0;
    

    der code wird alle 10 sekunden aufgerufen. Unter windows XP funktioniert das durchgängig. Unter Vista jedoch läuft das programm so 2 Minuten und dann kommen keine dateien mehr an (paar minuten jedoch schon)
    vielleicht braucht ihr noch das recv am server?

    recv(connectedSocket, (char *)&length, sizeof(length), 0); //länge
    char *buffer = RecvData(connectedSocket, length); //screen
    
    //hier die RecvData Funktion
    char* RecvData( SOCKET s, unsigned bytes )
    {
        unsigned bytes_read = 0;
    	static char tempBuff[9000000];
    	unsigned r;
        while ( bytes_read != bytes )
        {
            r = recv( s, tempBuff+bytes_read, bytes-bytes_read, 0 );
    
            // Grad keine Daten zum empfangen da?
            if ( r==-1 && WSAGetLastError()==WSAEWOULDBLOCK )
                Sleep( 20 );
            // Fehler bzw Verbindung geschlossen?
            else if ( r <= 0 )
                return false;
    		else
                bytes_read += r;
        }
        return tempBuff;
    }
    

    also wie gesagt unter windows xp läuft das perfekt aber unter vista nur so halb^^ zielpc ist xp falls das wichtig ist
    Wäre super wenn mir wer helfen könnte!
    Danke 🙂



  • *extrem wichtigen thread push*



  • Die Pusherei nützt hier nichts, da ist ein Spambot, der Dich gleich wieder überpusht.

    Übrigens sollte es reichen, wenn Du auf eine Antwort wartest. Wenn es jemand weiß, wird er sich schon melden.



  • ich sehe ein new[] aber kein delete[]...
    wahrscheinlich geht dir das memory aus oder sowas...
    Simon



  • hey danke für den Tipp!
    Das könnte natürlich sein, nur dann würde es unter xp ja auch nicht gehen oder



  • 4091send schrieb:

    hey danke für den Tipp!
    Das könnte natürlich sein, nur dann würde es unter xp ja auch nicht gehen oder

    Aber Unterschiede im Verhalten könnten durchaus resultieren.
    Simon


Anmelden zum Antworten