<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Sourcecodes von Websites teilw. fehlerhaft geladen]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich habe folgendes Problem:<br />
Ich hole mir den Quelltext einer Internetseite mit folgendem Code:</p>
<pre><code class="language-cpp">request(&quot;GET /blabla HTTP/1.1\r\nHost: www.beispiel.de\r\nConnection: close\r\n\r\n&quot;);

sock-&gt;create();
sock-&gt;connect(&quot;www.beispiel.de&quot;, 80);
sock-&gt;send(request);
sock-&gt;recv(str);
</code></pre>
<p>Jetzt möchte ich mit dem string str weiter arbeiten. Dummerweise schleichen sich gelegentlich sinnlose Kombinationen von Sonderzeichen in den Quellcode, was immer wieder zu Fehlern beim Suchen etc. innerhalb des Quellcodes führt. Aber eben auch nur manchmal stehen sinnlose Sonderzeichen (und unnütze Exponenten o.ä. mitten im Text) mit drin.</p>
<p>Wie kommt das?<br />
Was kann ich dagegen tun?</p>
<p>Vielen Dank im Voraus<br />
Sinthoras</p>
<p>P.S.: Ich hoffe, ich hab damit das richtige Forum getroffen... zu Webzeugs (PHP, ...) passt es für mich auch nicht besser, sonst ggf. bitte verschieben.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/231224/sourcecodes-von-websites-teilw-fehlerhaft-geladen</link><generator>RSS for Node</generator><lastBuildDate>Thu, 09 Apr 2026 17:19:29 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/231224.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 07 Jan 2009 17:24:10 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Sourcecodes von Websites teilw. fehlerhaft geladen on Wed, 07 Jan 2009 17:24:10 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich habe folgendes Problem:<br />
Ich hole mir den Quelltext einer Internetseite mit folgendem Code:</p>
<pre><code class="language-cpp">request(&quot;GET /blabla HTTP/1.1\r\nHost: www.beispiel.de\r\nConnection: close\r\n\r\n&quot;);

sock-&gt;create();
sock-&gt;connect(&quot;www.beispiel.de&quot;, 80);
sock-&gt;send(request);
sock-&gt;recv(str);
</code></pre>
<p>Jetzt möchte ich mit dem string str weiter arbeiten. Dummerweise schleichen sich gelegentlich sinnlose Kombinationen von Sonderzeichen in den Quellcode, was immer wieder zu Fehlern beim Suchen etc. innerhalb des Quellcodes führt. Aber eben auch nur manchmal stehen sinnlose Sonderzeichen (und unnütze Exponenten o.ä. mitten im Text) mit drin.</p>
<p>Wie kommt das?<br />
Was kann ich dagegen tun?</p>
<p>Vielen Dank im Voraus<br />
Sinthoras</p>
<p>P.S.: Ich hoffe, ich hab damit das richtige Forum getroffen... zu Webzeugs (PHP, ...) passt es für mich auch nicht besser, sonst ggf. bitte verschieben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1641238</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1641238</guid><dc:creator><![CDATA[Sinthoras]]></dc:creator><pubDate>Wed, 07 Jan 2009 17:24:10 GMT</pubDate></item><item><title><![CDATA[Reply to Sourcecodes von Websites teilw. fehlerhaft geladen on Wed, 07 Jan 2009 17:29:15 GMT]]></title><description><![CDATA[<blockquote>
<p>P.S.: Ich hoffe, ich hab damit das richtige Forum getroffen... zu Webzeugs (PHP, ...) passt es für mich auch nicht besser, sonst ggf. bitte verschieben.</p>
</blockquote>
<p>Leider nicht, denn das ist kein std C++.<br />
Was für eine Bibliothek benutzt du?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1641243</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1641243</guid><dc:creator><![CDATA[Fencer]]></dc:creator><pubDate>Wed, 07 Jan 2009 17:29:15 GMT</pubDate></item><item><title><![CDATA[Reply to Sourcecodes von Websites teilw. fehlerhaft geladen on Wed, 07 Jan 2009 17:31:43 GMT]]></title><description><![CDATA[<p>Die Sockets greifen auf <em>winsock.h</em> zurück.<br />
<em>libwsock32.a</em> entsprechend.<br />
Oder meintest du was anderes?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1641246</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1641246</guid><dc:creator><![CDATA[Sinthoras]]></dc:creator><pubDate>Wed, 07 Jan 2009 17:31:43 GMT</pubDate></item><item><title><![CDATA[Reply to Sourcecodes von Websites teilw. fehlerhaft geladen on Wed, 07 Jan 2009 17:34:13 GMT]]></title><description><![CDATA[<p>falsches forum. winapi ist nebenan.<br />
wo tauchen die fehler auf, nur am ende? dann fehlt vielleicht die 0 am ende.<br />
ansonsten ist das zu wenig code um mehr zu sagen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1641248</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1641248</guid><dc:creator><![CDATA[nachbar]]></dc:creator><pubDate>Wed, 07 Jan 2009 17:34:13 GMT</pubDate></item><item><title><![CDATA[Reply to Sourcecodes von Websites teilw. fehlerhaft geladen on Wed, 07 Jan 2009 17:35:43 GMT]]></title><description><![CDATA[<p>post doch nochmal im winapi forum, und post ein bißchen(!) mehr infos.<br />
(was ist str? wie ist recv implementiert?)</p>
<p>ich weiß nicht ob es daran liegt aber die soweit ich weiß mußt du an die char* die du von der recv funktion kriegst noch ein '\0' hängen. bin mir aber nicht mehr sicher</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1641249</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1641249</guid><dc:creator><![CDATA[Fencer]]></dc:creator><pubDate>Wed, 07 Jan 2009 17:35:43 GMT</pubDate></item><item><title><![CDATA[Reply to Sourcecodes von Websites teilw. fehlerhaft geladen on Wed, 07 Jan 2009 17:37:50 GMT]]></title><description><![CDATA[<p>Nein, mitten im String stehen manchmal sinnlose Zeichen, manchmal aber auch nicht. Bei ein und derselben Seite scheinbar zufällig.<br />
Kann das sein, dass er evtl. mit Sonderzeichen nicht klar kommt?<br />
Ich also auf eine andere Codierung zurückgreifen muss?</p>
<p>Was fehlt dir noch an Code?<br />
Brauchst du die Klasse <em>sock</em>?<br />
Ansonsten passiert da nichts spannendes mehr. Der Fehler tritt schon auf, wenn ich <em>str</em> auf der Standardausgabe ausgebe. Oder äußert sich halt so, dass <em>str.find(...)</em> eigentlich vorhandene Strings nicht findet, weil sie durch Sonderzeichen unterbrochen sind.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1641252</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1641252</guid><dc:creator><![CDATA[Sinthoras]]></dc:creator><pubDate>Wed, 07 Jan 2009 17:37:50 GMT</pubDate></item><item><title><![CDATA[Reply to Sourcecodes von Websites teilw. fehlerhaft geladen on Wed, 07 Jan 2009 17:40:08 GMT]]></title><description><![CDATA[<p>wie gesagt winapi forum</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1641255</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1641255</guid><dc:creator><![CDATA[Fencer]]></dc:creator><pubDate>Wed, 07 Jan 2009 17:40:08 GMT</pubDate></item><item><title><![CDATA[Reply to Sourcecodes von Websites teilw. fehlerhaft geladen on Wed, 07 Jan 2009 17:40:34 GMT]]></title><description><![CDATA[<p>Dann bitte verschieben, wenn ein Mod das sieht.</p>
<p>str ist ein normaler String.<br />
Code für Socket stammt größtenteils aus einem Buch und sieht so aus:</p>
<pre><code class="language-cpp">// socket.h
#ifndef _SOCKET_H_
#define _SOCKET_H_

#include &lt;winsock.h&gt;
#include &lt;string&gt;
#include &lt;windows.h&gt;
#include &lt;io.h&gt;

const int MAXRECV = 1024;

class Socket
{
    private:
    int m_sock;
    sockaddr_in m_addr;

    public:
    Socket();
    virtual ~Socket();

    bool create();
    bool bind(const int port);
    //bool listen();
    //bool accept();
    bool connect(const std::string host, const int port);

    bool send(const std::string) const;
    int recv(std::string&amp;) const;

    bool close() const;

    void cleanup() const;
    bool is_valid() const {return m_sock != -1;}
};

#endif
</code></pre>
<pre><code class="language-cpp">//socket.cpp

#include &quot;socket.h&quot;

#include &lt;cstdlib&gt;
#include &lt;iostream&gt;
#include &lt;io.h&gt;
#include &lt;windows.h&gt;
#include &lt;winsock2.h&gt;

using namespace std;

Socket::Socket() : m_sock(0)
{
    //Windows DLL intitialisieren
    WORD wVersionRequested;
    WSADATA wsaData;
    wVersionRequested = MAKEWORD (2,2);
    if(WSAStartup (wVersionRequested, &amp;wsaData) != 0)
    {
        cout &lt;&lt; &quot;Fehler beim Initialisieren von Winsock\n&quot;;
        exit(1);
    }
}

Socket::~Socket()
{
    if( is_valid() )
    ::closesocket(m_sock);
}

bool Socket::create()
{
    m_sock = ::socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
    if(m_sock &lt; 0)
    {
        cout &lt;&lt; &quot;Fehler beim Anlegen eines Sockets\n&quot;;
        exit(1);
    }
    return true;
}

//Erzeugt Bindung an Serveradresse/ Port
bool Socket::bind( const int port )
{
    if ( ! is_valid() )             // Socket nicht korrekt
    {
        return false;
    }
    m_addr.sin_family = AF_INET;
    m_addr.sin_addr.s_addr = INADDR_ANY;
    m_addr.sin_port = htons(port);          // in Network-Byte-Order umwandeln

                    // Scope-Operator =&gt; Aufruf der API-Fkt. bind()
    int bind_return = ::bind(m_sock, (struct sockaddr* )&amp;m_addr, sizeof(m_addr));
                                    // Umwandlung in von bind() erfordete Struktur
    if(bind_return==-1) return false;

    return true;
}

bool Socket::connect(const string host, const int port)
{
    if( !is_valid() ) return false;

    struct hostent* host_info;
    unsigned long addr;
    //mit Nullen füllen
    memset( &amp;m_addr, 0, sizeof(m_addr));

    if( addr = inet_addr( host.c_str() ) != INADDR_NONE )
        // wenn host gültige numerische Adresse enthält
    {
        memcpy( (char*)&amp;m_addr.sin_addr, &amp;addr, sizeof(addr));      //Adresstruktur füllen
    }
    else   // keine gültige numerische Adresse
    {
        host_info = gethostbyname(host.c_str());
        if(NULL == host_info)
        {
            cout &lt;&lt; &quot;Unbekannter Server\n&quot;;
            exit(1);
        }
        memcpy( (char*)&amp;m_addr.sin_addr, host_info-&gt;h_addr, host_info-&gt;h_length);
    }
    // Rest der Adressstruktur füllen
    m_addr.sin_family = AF_INET;
    m_addr.sin_port = htons(port);

    int status = ::connect(m_sock, (sockaddr*)&amp;m_addr, sizeof(m_addr));
                // API-Fkt.
    if(status==0) return true;
    else          return false;
}

bool Socket::send( const string s ) const
{
    int status = ::send (m_sock, s.c_str(), s.size(), 0);
    if(status==-1)
    {
        return false;
    }
    else
    {
        return true;
    }
}

int Socket::recv(string&amp; s) const
{
    cout &lt;&lt; &quot;Socket::recv startet\n&quot;;
    char buf[MAXRECV +1];
    s=&quot;&quot;;
    int status = -1;

    while(status!=0)
    {
    // buffer mit Nullen füllen
    memset(buf, 0, MAXRECV);

    status = ::recv(m_sock, buf, MAXRECV, 0);
    if(status&gt;0 || status != SOCKET_ERROR)
    {
        s.append(buf);
    }
    else
    {
        cout &lt;&lt; &quot;Fehler in Socket::recv\n&quot;;
        cout &lt;&lt; WSAGetLastError();

        exit(1);
        return 0;
    }
    }
    cout &lt;&lt; &quot;Verbindung beendet\n&quot;;
    return status;
}

bool Socket::close() const
{
    closesocket(m_sock);
    cleanup();
    return true;
}

void Socket::cleanup() const
{
    WSACleanup();
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1641257</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1641257</guid><dc:creator><![CDATA[Sinthoras]]></dc:creator><pubDate>Wed, 07 Jan 2009 17:40:34 GMT</pubDate></item><item><title><![CDATA[Reply to Sourcecodes von Websites teilw. fehlerhaft geladen on Wed, 07 Jan 2009 18:02:29 GMT]]></title><description><![CDATA[<p>Sinthoras schrieb:</p>
<blockquote>
<p>Nein, mitten im String stehen manchmal sinnlose Zeichen, manchmal aber auch nicht.</p>
</blockquote>
<p>Ich würde mal sagen: Manche Seiten sind mit UTF-8 codiert und manche mit ISO-8859-1<br />
Das wird vrmtl im Header der Seite irgendwo stehen - und du wirst nicht drum rum kommen den string in einen wstring zu konvertieren...<br />
Bin mir zwar jz nicht zu 100% sicher aber das findest du leicht heraus in dem du nen paar Tests machst...</p>
<p>Fencer schrieb:</p>
<blockquote>
<p>soweit ich weiß mußt du an die char* die du von der recv funktion kriegst noch ein '\0' hängen.</p>
</blockquote>
<p>Für den Fall, dass man das ausgeben will, wird das zu 99% stimmen ^^ Aber eigtl sollte das seine Funktion schon machen: (und er arbeitet ja eh mit std::string - also ist das nicht der Fehler - die Funktion an sich aber schon ^^)</p>
<blockquote>
<pre><code class="language-cpp">int Socket::recv(string&amp; s) const
{
    char buf[MAXRECV +1]; //nimm die +1 weg
    s=&quot;&quot;;
    int status = -1;

//  while(status!=0)  //prüfst du doch in der Schleife schon...
    for ( ;; )
    {
//      memset(buf, 0, MAXRECV); //1. unnötig und 2. warum nicht auch das letzte zeichen?

        status = ::recv(m_sock, buf, MAXRECV, 0);
//      if(status&gt;0 || status != SOCKET_ERROR)
        if(status == 0)
           break; //die Verbindung wurde erfolgreich beendet - du hast also entweder alle Daten ODER aber zumindest einen Teil
        if(status == SOCKET_ERROR)
           return SOCKET_ERROR;

//      s.append(buf); //so einfach geht das nicht (die Länge wird nicht um sonst wiedergegeben - weil eben auch in der Mitte eine '\0' stehen kann - je nachdem, welche Inhalte da drin sind und wie die Kodierung ist
        const std::string tmp(buf, buf+status);
        s.append(tmp);
    }
//  return status; //falsch!
    return s.length();
}
</code></pre>
</blockquote>
<p>Sie ist noch immer nicht perfekt aber wenigsten sollte sie jz auch das machen, was sie sollte ^^</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1641278</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1641278</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Wed, 07 Jan 2009 18:02:29 GMT</pubDate></item><item><title><![CDATA[Reply to Sourcecodes von Websites teilw. fehlerhaft geladen on Wed, 07 Jan 2009 18:02:50 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">status = ::recv(m_sock, buf, MAXRECV, 0); 
    if(status&gt;0 || status != SOCKET_ERROR) 
    { 
        s.append(buf); 
    }
</code></pre>
<p>recv tut nicht 0 terminieren tun</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1641279</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1641279</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Wed, 07 Jan 2009 18:02:50 GMT</pubDate></item><item><title><![CDATA[Reply to Sourcecodes von Websites teilw. fehlerhaft geladen on Wed, 07 Jan 2009 19:28:58 GMT]]></title><description><![CDATA[<p>Shade Of Mine schrieb:</p>
<blockquote>
<pre><code class="language-cpp">status = ::recv(m_sock, buf, MAXRECV, 0); 
    if(status&gt;0 || status != SOCKET_ERROR) 
    { 
        s.append(buf); 
    }
</code></pre>
<p>recv tut nicht 0 terminieren tun</p>
</blockquote>
<p>dafür hat er ja obendrüber das mit dem <code>memset</code> gemacht gehabt... das war also nicht der fehler (abgesehen davon, was passiert wenn recv auch [c]maxrecv[c] zeichen empfängt - aber ok ^^</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1641346</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1641346</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Wed, 07 Jan 2009 19:28:58 GMT</pubDate></item><item><title><![CDATA[Reply to Sourcecodes von Websites teilw. fehlerhaft geladen on Wed, 07 Jan 2009 19:30:46 GMT]]></title><description><![CDATA[<p>unskilled schrieb:</p>
<blockquote>
<p>was passiert wenn recv auch [c]maxrecv[c] zeichen empfängt</p>
</blockquote>
<p>genau.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1641350</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1641350</guid><dc:creator><![CDATA[volltreffer]]></dc:creator><pubDate>Wed, 07 Jan 2009 19:30:46 GMT</pubDate></item><item><title><![CDATA[Reply to Sourcecodes von Websites teilw. fehlerhaft geladen on Wed, 07 Jan 2009 21:18:34 GMT]]></title><description><![CDATA[<p>Vielen, vielen Dank für dich vielen Antworten und die große Mühe!</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/16305">@unskilled</a>:<br />
Speziell für Deine Mühe vielen Dank.<br />
Die recv-Funktion hab ich aus dem Buch abgeschrieben. Hat auch bisher getan, was sie sollte.<br />
Deine tut es auch, ich nehm dann wohl die, wenn es so richtig ist...<br />
Danke.</p>
<p>Was ich immernoch nicht verstanden habe: Wieso bekomme ich bei ein und derselben Seite mal den richtigen Quellcode und mal noch ein paar fehlerhafte Zeichen dazu?<br />
Kommt er nur manchmal mit der Formatierung klar?!? Das kommt mir wirklich seltsam vor. Wenn es wenigstens immer oder nie falsch wäre...</p>
<p>Edit:<br />
Der Quelltext ist formatiert nach iso-8859-1.<br />
Kann ich da bei string bleiben?<br />
(Ich hab leider null Ahnung von Stringkodierungen...)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1641401</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1641401</guid><dc:creator><![CDATA[Sinthoras]]></dc:creator><pubDate>Wed, 07 Jan 2009 21:18:34 GMT</pubDate></item><item><title><![CDATA[Reply to Sourcecodes von Websites teilw. fehlerhaft geladen on Wed, 07 Jan 2009 21:55:21 GMT]]></title><description><![CDATA[<p>Sinthoras schrieb:</p>
<blockquote>
<p>Edit:<br />
Der Quelltext ist formatiert nach iso-8859-1.<br />
Kann ich da bei string bleiben?<br />
(Ich hab leider null Ahnung von Stringkodierungen...)</p>
</blockquote>
<p>Ich leider auch nicht ^^<br />
musste mal wikipedia gucken ^^<br />
ansonsten weiß ich leider nicht, warum es mal falsch und mal richtig ist... dann konnte es auch eher weniger an der fkt liegen... &gt;&lt;</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1641430</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1641430</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Wed, 07 Jan 2009 21:55:21 GMT</pubDate></item><item><title><![CDATA[Reply to Sourcecodes von Websites teilw. fehlerhaft geladen on Thu, 08 Jan 2009 02:49:36 GMT]]></title><description><![CDATA[<p>Sinthoras schrieb:</p>
<blockquote>
<pre><code class="language-cpp">// socket.h
#ifndef _SOCKET_H_
#define _SOCKET_H_

#include &lt;winsock.h&gt;
#include &lt;string&gt;
#include &lt;windows.h&gt;
#include &lt;io.h&gt;

const int MAXRECV = 1024;

class Socket
{
    private:
    int m_sock;
    sockaddr_in m_addr;

    public:
    Socket();
    virtual ~Socket();

    bool create();
    bool bind(const int port);
    //bool listen();
    //bool accept();
    bool connect(const std::string host, const int port);

    bool send(const std::string) const; // ???
    int recv(std::string&amp;) const; // ???

    bool close() const; // ???

    void cleanup() const; // ???
    bool is_valid() const {return m_sock != -1;}
};

#endif
</code></pre>
</blockquote>
<p>Überdenk mal deinen eigensinnigen Umgang mit const <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /><br />
Nicht alles was sich als const compilieren lässt sollte man auch const machen. Dinge wie send/recv bzw. read/write würde ich auf keinen Fall const machen -- schliesslich haben diese Funktionen ja durchaus nicht zu vernachlässigende Seiteneffekte.</p>
<p>Einzig ein &quot;read&quot; in einer File-Klasse die keinen &quot;File-Pointer&quot; verwaltet (bzw. eine &quot;Variante&quot; von Read die diesen File-Pointer nicht ändert) würde ich als const ansehen, da sich dadurch der Zustand des Objektes ja wirklich nicht ändert.</p>
<p>Anders gesagt: const sollten IMO nur Dinge sein, bei denen es keine Rolle spielt ob man sie wiederholt, oder ganz weglässt (ganz weglassen geht natürlich nur sofern man das Ergebnis nicht auswertet). Und bei send/recv/close/... auf einen Socket ist das ja ganz sicher nicht gegeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1641472</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1641472</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Thu, 08 Jan 2009 02:49:36 GMT</pubDate></item><item><title><![CDATA[Reply to Sourcecodes von Websites teilw. fehlerhaft geladen on Thu, 08 Jan 2009 15:36:39 GMT]]></title><description><![CDATA[<p>Ich hab gelesen, ich solle das alles const machen. Aber ich muss gestehen, ich weiß nicht, warum...<br />
Könntest du mir erklären, was hier das Problem ist bzw. was sich dadurch ändert?<br />
Ich dachte, ich sage dem Compiler damit nur, dass meine Methode das Objekt nicht ändert. Nicht?</p>
<p>Davon ab: Weiß vielleicht doch jemand, warum der Quelltext mal richtig, mal falsch geladen wird?</p>
<p>LG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1641854</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1641854</guid><dc:creator><![CDATA[Sinthoras]]></dc:creator><pubDate>Thu, 08 Jan 2009 15:36:39 GMT</pubDate></item><item><title><![CDATA[Reply to Sourcecodes von Websites teilw. fehlerhaft geladen on Thu, 08 Jan 2009 23:07:07 GMT]]></title><description><![CDATA[<p>Sinthoras schrieb:</p>
<blockquote>
<p>Davon ab: Weiß vielleicht doch jemand, warum der Quelltext mal richtig, mal falsch geladen wird?</p>
</blockquote>
<p>steht doch schon da oben: du liest MAXRECV bytes ein und hast dann keine abschließende 0 mehr. beim anhängen an den string hängts dann vom zufall ab, wo der string terminiert wird (nämlich bei der ersten zufällig gefundenen 0 im speicher hinter dem string).</p>
<p>versuch doch mal mit</p>
<pre><code class="language-cpp">status = ::recv(m_sock, buf, MAXRECV - 1, 0);
</code></pre>
<p>dann wird die 0 auch nicht überschrieben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1642149</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1642149</guid><dc:creator><![CDATA[diagnostiker]]></dc:creator><pubDate>Thu, 08 Jan 2009 23:07:07 GMT</pubDate></item><item><title><![CDATA[Reply to Sourcecodes von Websites teilw. fehlerhaft geladen on Fri, 09 Jan 2009 00:04:31 GMT]]></title><description><![CDATA[<p>Sinthoras schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/16305">@unskilled</a>:<br />
[...]<br />
Die recv-Funktion hab ich aus dem Buch abgeschrieben. Hat auch bisher getan, was sie sollte.<br />
Deine tut es auch, ich nehm dann wohl die, wenn es so richtig ist...<br />
Danke.</p>
<p>Was ich immernoch nicht verstanden habe: Wieso bekomme ich bei ein und derselben Seite mal den richtigen Quellcode und mal noch ein paar fehlerhafte Zeichen dazu?</p>
</blockquote>
<p>Was nun? Hast du es mit meiner recv-Funktion versucht oder mit der, die du davor hattest? (btw glaub ich dir nicht, dass du die so in nem Buch gefunden hast...)<br />
Falls du noch immer die offensichtlich falsche Methode (kam ja nun schon von mind. 3 Leuten), dann solltest du evtl mal nachdenken, ob du verstanden hast, was deine Funktion macht und vll doch mal die Beiträge lesen...</p>
<p>Zum const-Umgang:</p>
<p>Sinthoras schrieb:</p>
<blockquote>
<p>Ich dachte, ich sage dem Compiler damit nur, dass meine Methode das Objekt nicht ändert. Nicht?</p>
</blockquote>
<p>Prinzipiell schon...<br />
Aber ich halte so etwas auch für sehr sinnvoll:</p>
<p>hustbaer schrieb:</p>
<blockquote>
<p>Anders gesagt: <strong>const sollten IMO nur Dinge sein, bei denen es keine Rolle spielt ob man sie wiederholt, oder ganz weglässt</strong> (ganz weglassen geht natürlich nur sofern man das Ergebnis nicht auswertet). Und bei send/recv/close/... auf einen Socket ist das ja ganz sicher nicht gegeben.</p>
</blockquote>
<p>Hat hustbaer eigtl schon alles dazu gesagt...</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1642167</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1642167</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Fri, 09 Jan 2009 00:04:31 GMT</pubDate></item><item><title><![CDATA[Reply to Sourcecodes von Websites teilw. fehlerhaft geladen on Fri, 09 Jan 2009 09:31:19 GMT]]></title><description><![CDATA[<p>Dieser Thread wurde von Moderator/in <a href="http://www.c-plusplus.net/forum/profile-var-mode-is-viewprofile-and-u-is-14199.html" rel="nofollow">Phoemuex</a> aus dem Forum <a href="http://www.c-plusplus.net/forum/viewforum-var-f-is-15.html" rel="nofollow">C++</a> in das Forum <a href="http://www.c-plusplus.net/forum/viewforum-var-f-is-4.html" rel="nofollow">WinAPI</a> verschoben.</p>
<p>Im Zweifelsfall bitte auch folgende Hinweise beachten:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-39405.html" rel="nofollow">C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?</a></p>
<p><em>Dieses Posting wurde automatisch erzeugt.</em></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1642270</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1642270</guid><dc:creator><![CDATA[C++ Forumbot]]></dc:creator><pubDate>Fri, 09 Jan 2009 09:31:19 GMT</pubDate></item><item><title><![CDATA[Reply to Sourcecodes von Websites teilw. fehlerhaft geladen on Fri, 09 Jan 2009 13:38:05 GMT]]></title><description><![CDATA[<p>diagnostiker schrieb:</p>
<blockquote>
<p>Sinthoras schrieb:</p>
<blockquote>
<p>Davon ab: Weiß vielleicht doch jemand, warum der Quelltext mal richtig, mal falsch geladen wird?</p>
</blockquote>
<p>steht doch schon da oben: du liest MAXRECV bytes ein und hast dann keine abschließende 0 mehr. beim anhängen an den string hängts dann vom zufall ab, wo der string terminiert wird (nämlich bei der ersten zufällig gefundenen 0 im speicher hinter dem string).</p>
<p>versuch doch mal mit</p>
<pre><code class="language-cpp">status = ::recv(m_sock, buf, MAXRECV - 1, 0);
</code></pre>
<p>dann wird die 0 auch nicht überschrieben.</p>
</blockquote>
<p>Danke. Das Problem hatte ich davor nicht verstanden. Jetzt schon, danke.</p>
<p>unskilled schrieb:</p>
<blockquote>
<p>btw glaub ich dir nicht, dass du die so in nem Buch gefunden hast...</p>
</blockquote>
<p>Darfst du getrost glauben. Ausgedacht hab ich's mir nicht, sonst hätte ich mir schon überlegt, was das soll...<br />
(J. Wolf, C++ von A bis Z, S.926 u. S.928 ff.)</p>
<p>Hab den Fehler jetzt behoben und ich denke, es geht jetzt.<br />
Vielen Dank an alle, die mir geholfen haben.</p>
<p>LG<br />
Sinthoras</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1642423</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1642423</guid><dc:creator><![CDATA[Sinthoras]]></dc:creator><pubDate>Fri, 09 Jan 2009 13:38:05 GMT</pubDate></item><item><title><![CDATA[Reply to Sourcecodes von Websites teilw. fehlerhaft geladen on Fri, 09 Jan 2009 14:07:52 GMT]]></title><description><![CDATA[<p>Sinthoras schrieb:</p>
<blockquote>
<p>(J. Wolf, C++ von A bis Z, S.926 u. S.928 ff.)</p>
</blockquote>
<p>dieses Buch ist als sehr schlechtes bekannt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1642451</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1642451</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Fri, 09 Jan 2009 14:07:52 GMT</pubDate></item></channel></rss>