<?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[SOCKETS &amp;amp; Threadding]]></title><description><![CDATA[<p>Hi an alle,<br />
ich habe ein kleines Problem und zwar geht es um folgendes.</p>
<p>Ich möchte ein Client mit GUI für ein CE Gerät schreiben der Befehle entgegen nimmt und diese dann abarbeitet.</p>
<p>Die GUI besteht nur aus einer multilined Textbox die nur den Status anzeigen soll was der Client gerade macht.</p>
<p>Die Aufgaben die der CLienet übernimmt sollen in einen eigenen Thread, damit die GUI nicht einfriert während Aufgaben zu erledigen sind.</p>
<p>Jetzt zum Problem:</p>
<p>Ich bin gerade dabei eine Klasse zu bastel, die das ganze Connection Management erledigen soll.<br />
In meiner InitializeSocket Methode klappt das Initialisieren auch, jedoch ist nach verlassen der Methode der Socket ungültig und ich weiss nicht warum.<br />
Kann mir da jemand von euch weiter helfen?</p>
<pre><code class="language-cpp">bool Connection::InitializeSocket()
{
    bool bRetVal = false;

    WSADATA wsaData;
    int iResult = WSAStartup(MAKEWORD(2,2), &amp;wsaData);

    if (iResult == NO_ERROR)
    {
        SOCKET m_socket =socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP);

        if ( m_socket == INVALID_SOCKET )
        {
            WSACleanup();
        }
        else
        {
            sockaddr_in service;
            service.sin_family = AF_INET;
            service.sin_addr.s_addr = GetOwnIp();
            service.sin_port = htons(31337);

            if ( bind(m_socket, (SOCKADDR*) &amp;service, sizeof(service)) == SOCKET_ERROR)
            {
                closesocket(m_socket);
            }
            else
            {
                bRetVal = true;
            }
        }
    }

    return bRetVal;
}
</code></pre>
<p>Der Worker thread sieht bisher noch so aus</p>
<pre><code class="language-cpp">DWORD CPanelTestsuiteClientDlg::BackgroundWorker(LPVOID lpParam)
{
    CPanelTestsuiteClientDlg* pThis = (CPanelTestsuiteClientDlg*)lpParam;
    pThis-&gt;WriteStatusMessage(L&quot;Hello, I am the Backgroundworker&quot;);

    Connection con;
    if ( false != con.InitializeSocket() )
    {
        //...
    }

    return 0;
}
</code></pre>
<p>schonmal vielen Dank für eure Hilfe,</p>
<p>Gruß<br />
Sascha</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/256281/sockets-amp-threadding</link><generator>RSS for Node</generator><lastBuildDate>Fri, 11 Sep 2026 10:28:58 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/256281.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 10 Dec 2009 14:01:15 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to SOCKETS &amp;amp; Threadding on Thu, 10 Dec 2009 14:01:15 GMT]]></title><description><![CDATA[<p>Hi an alle,<br />
ich habe ein kleines Problem und zwar geht es um folgendes.</p>
<p>Ich möchte ein Client mit GUI für ein CE Gerät schreiben der Befehle entgegen nimmt und diese dann abarbeitet.</p>
<p>Die GUI besteht nur aus einer multilined Textbox die nur den Status anzeigen soll was der Client gerade macht.</p>
<p>Die Aufgaben die der CLienet übernimmt sollen in einen eigenen Thread, damit die GUI nicht einfriert während Aufgaben zu erledigen sind.</p>
<p>Jetzt zum Problem:</p>
<p>Ich bin gerade dabei eine Klasse zu bastel, die das ganze Connection Management erledigen soll.<br />
In meiner InitializeSocket Methode klappt das Initialisieren auch, jedoch ist nach verlassen der Methode der Socket ungültig und ich weiss nicht warum.<br />
Kann mir da jemand von euch weiter helfen?</p>
<pre><code class="language-cpp">bool Connection::InitializeSocket()
{
    bool bRetVal = false;

    WSADATA wsaData;
    int iResult = WSAStartup(MAKEWORD(2,2), &amp;wsaData);

    if (iResult == NO_ERROR)
    {
        SOCKET m_socket =socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP);

        if ( m_socket == INVALID_SOCKET )
        {
            WSACleanup();
        }
        else
        {
            sockaddr_in service;
            service.sin_family = AF_INET;
            service.sin_addr.s_addr = GetOwnIp();
            service.sin_port = htons(31337);

            if ( bind(m_socket, (SOCKADDR*) &amp;service, sizeof(service)) == SOCKET_ERROR)
            {
                closesocket(m_socket);
            }
            else
            {
                bRetVal = true;
            }
        }
    }

    return bRetVal;
}
</code></pre>
<p>Der Worker thread sieht bisher noch so aus</p>
<pre><code class="language-cpp">DWORD CPanelTestsuiteClientDlg::BackgroundWorker(LPVOID lpParam)
{
    CPanelTestsuiteClientDlg* pThis = (CPanelTestsuiteClientDlg*)lpParam;
    pThis-&gt;WriteStatusMessage(L&quot;Hello, I am the Backgroundworker&quot;);

    Connection con;
    if ( false != con.InitializeSocket() )
    {
        //...
    }

    return 0;
}
</code></pre>
<p>schonmal vielen Dank für eure Hilfe,</p>
<p>Gruß<br />
Sascha</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1820619</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1820619</guid><dc:creator><![CDATA[_Sascha_]]></dc:creator><pubDate>Thu, 10 Dec 2009 14:01:15 GMT</pubDate></item><item><title><![CDATA[Reply to SOCKETS &amp;amp; Threadding on Thu, 10 Dec 2009 14:17:04 GMT]]></title><description><![CDATA[<blockquote>
<p>In meiner InitializeSocket Methode klappt das Initialisieren auch, jedoch ist nach verlassen der Methode der Socket ungültig und ich weiss nicht warum.</p>
</blockquote>
<p>Weil es lokal zur Funktion ist. Mache ein Member der Klasse Connection daraus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1820640</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1820640</guid><dc:creator><![CDATA[theta]]></dc:creator><pubDate>Thu, 10 Dec 2009 14:17:04 GMT</pubDate></item><item><title><![CDATA[Reply to SOCKETS &amp;amp; Threadding on Thu, 10 Dec 2009 15:52:37 GMT]]></title><description><![CDATA[<p>Wie kann man nur so blind sein .... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
<p>ich hab es vorher direkt lokal zum testen versucht und dann beim copy&amp;paste vergessen das SOCKET zu entfernen... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<p>Damit wird m_socket der Klasse verdeckt ...</p>
<p>Danke,</p>
<p>Gruß,<br />
Sascha</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1820723</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1820723</guid><dc:creator><![CDATA[_Sascha_]]></dc:creator><pubDate>Thu, 10 Dec 2009 15:52:37 GMT</pubDate></item></channel></rss>