empfange müll :)



  • Hab mal wieder ein problem oO

    buffer="slogin tobZel <pw>\n";
    		send(connectionsocket, buffer.c_str(), buffer.length(), 0);
    		buffer="sel 1337\n";
    		send(connectionsocket, buffer.c_str(), buffer.length(), 0);
    		buffer.clear();
    		//while(std::count(buffer.begin(), buffer.end(), '\n')!=3)
    		//{
    			recv(connectionsocket, empfangen, 512, 0);
    			buffer+=empfangen;
    			std::cout << buffer << std::endl;
    		//}
    

    So das ist jetzt folgendermaßen ich will in C++ eine anfrage an einen TS server stellen mit hilfe von sockets 🙂
    Das mach ich über den TCP port 51234 connecten und so funktioniert auch.
    die while die ich da auskommentiert ist hab ich raus getan weil sie in einer endloschleife endet. Sie sollte normal folgendes aus dem buffer hohlen:
    [TS]\n
    OK\n
    OK\n

    wobei OK auch ein error sein kann aber jede antwort ist mit einem \n abgeschlossen.
    Der Müll ist jetzt nur das ich nur ein zeichen wirrwarr bekomme statt den strings.
    Weiß jemand woran das liegen könnte?
    Wer mehr Infos braucht melden!

    mfg tobZel



  • man: recv(2) 0-terminiert die Daten nicht, die du liest. Das musst du also selbst machen (siehe den Rückgabewert von recv)



  • thx rüdiger
    ich habs jetzt so abgeändert:

    buffer.clear() //er ist leer :)
    //while(std::count(buffer.begin(), buffer.end(), '\n')!=3)
    //{
    	num=recv(connectionsocket, empfangen, 512, 0);
    	buffer+=empfangen;
    //}
    buffer+= '\0';
    std::cout << buffer << std::endl;
    

    ist aber das gleiche.
    Paar infos über den ouput:
    ca. 150zeichen sind solche eck-linien von DOS für das erstllen von boxen sind aber alle so ecke also alle die gleichen.
    Die letzten 5Zeichen sind - so scheint es - random chars.

    mfg tobZel



  • Da Du den Rückgabewert von recv immernoch nicht auswertest, ist das Ergebnis auch immernoch wie vorher.

    EDIT:
    Hint: Du musst das Nullbyte in 'empfangen' nach dem letzten von recv empfangenen Byte setzen vor dem +=.


Anmelden zum Antworten