<?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[Socket(s) auf UDP-Basis...]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ich habe mir eine Client/Server-Applikation auf Basis von CAsyncSocket geschrieben, in der der Client dem Server ein &quot;Paar&quot; IP-Pakete schickt und diese vom Server sofort wieder zurückgeschickt bekommt. Mit TCP (--&gt; SOCK_STREAM) funktioniert auch alles wunderbar, nur wenn Ich das Ganze auf UDP (--&gt; SOCK_DGRAM) umstelle funktioniert der Datenaustausch zwischen Client u. Server nicht mehr. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Kann mir jemand weiterhelfen?</p>
<p>Hier noch ein bisschen Code:</p>
<pre><code class="language-cpp">void CServerDlg::OnButtonListen() 
{
    // Variablen mit Steuerelementen synchronisieren
    UpdateData(TRUE);   

    // Steuerelemente deaktivieren
    GetDlgItem(IDC_RADIO_TCP)-&gt;EnableWindow(FALSE);
    GetDlgItem(IDC_RADIO_UDP)-&gt;EnableWindow(FALSE);
    GetDlgItem(IDC_EDIT_PORTNUMBER)-&gt;EnableWindow(FALSE);
    GetDlgItem(IDC_SPIN_PORTINC)-&gt;EnableWindow(FALSE);
    GetDlgItem(IDC_BUTTON_LISTEN)-&gt;EnableWindow(FALSE);
    GetDlgItem(IDC_BUTTON_EXIT)-&gt;EnableWindow(FALSE);
    GetDlgItem(IDC_BUTTON_ABOUT)-&gt;EnableWindow(FALSE);

    GetDlgItem(IDC_BUTTON_STOP)-&gt;EnableWindow(TRUE);

    // wurde TCP oder UDP ausgewählt?
    if (m_iSocketType == 0)
    {
        /**
         * TCP
         */
        // Socket erzeugen
        m_sListenSocket.Create(m_iPortnumber, SOCK_STREAM);

        // auf Verbindungsanfragen warten
        m_sListenSocket.Listen();
    }
    else
    {
        /**
         * UDP
         */     
        // Socket erzeugen
        m_sListenSocket.Create(m_iPortnumber, SOCK_DGRAM);

        struct sockaddr_in addr;

        addr.sin_family = AF_INET;
        addr.sin_port = htons(m_iPortnumber);
        addr.sin_addr.S_un.S_addr = INADDR_ANY;

        m_sListenSocket.Bind((const sockaddr*)&amp;addr, sizeof(addr));     
    }
}
</code></pre>
<p>Hierbei handelt es sich um die Server-Seite... - offenbar muss Ich bei UDP &quot; <strong>Bind&quot;</strong> anstelle von <strong>&quot;Listen&quot;</strong> verwenden... aber leider funktioniert es trotzdem nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/6175/socket-s-auf-udp-basis</link><generator>RSS for Node</generator><lastBuildDate>Fri, 17 Apr 2026 23:24:34 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/6175.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 09 Jun 2003 13:52:00 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Socket(s) auf UDP-Basis... on Mon, 09 Jun 2003 13:52:00 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ich habe mir eine Client/Server-Applikation auf Basis von CAsyncSocket geschrieben, in der der Client dem Server ein &quot;Paar&quot; IP-Pakete schickt und diese vom Server sofort wieder zurückgeschickt bekommt. Mit TCP (--&gt; SOCK_STREAM) funktioniert auch alles wunderbar, nur wenn Ich das Ganze auf UDP (--&gt; SOCK_DGRAM) umstelle funktioniert der Datenaustausch zwischen Client u. Server nicht mehr. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Kann mir jemand weiterhelfen?</p>
<p>Hier noch ein bisschen Code:</p>
<pre><code class="language-cpp">void CServerDlg::OnButtonListen() 
{
    // Variablen mit Steuerelementen synchronisieren
    UpdateData(TRUE);   

    // Steuerelemente deaktivieren
    GetDlgItem(IDC_RADIO_TCP)-&gt;EnableWindow(FALSE);
    GetDlgItem(IDC_RADIO_UDP)-&gt;EnableWindow(FALSE);
    GetDlgItem(IDC_EDIT_PORTNUMBER)-&gt;EnableWindow(FALSE);
    GetDlgItem(IDC_SPIN_PORTINC)-&gt;EnableWindow(FALSE);
    GetDlgItem(IDC_BUTTON_LISTEN)-&gt;EnableWindow(FALSE);
    GetDlgItem(IDC_BUTTON_EXIT)-&gt;EnableWindow(FALSE);
    GetDlgItem(IDC_BUTTON_ABOUT)-&gt;EnableWindow(FALSE);

    GetDlgItem(IDC_BUTTON_STOP)-&gt;EnableWindow(TRUE);

    // wurde TCP oder UDP ausgewählt?
    if (m_iSocketType == 0)
    {
        /**
         * TCP
         */
        // Socket erzeugen
        m_sListenSocket.Create(m_iPortnumber, SOCK_STREAM);

        // auf Verbindungsanfragen warten
        m_sListenSocket.Listen();
    }
    else
    {
        /**
         * UDP
         */     
        // Socket erzeugen
        m_sListenSocket.Create(m_iPortnumber, SOCK_DGRAM);

        struct sockaddr_in addr;

        addr.sin_family = AF_INET;
        addr.sin_port = htons(m_iPortnumber);
        addr.sin_addr.S_un.S_addr = INADDR_ANY;

        m_sListenSocket.Bind((const sockaddr*)&amp;addr, sizeof(addr));     
    }
}
</code></pre>
<p>Hierbei handelt es sich um die Server-Seite... - offenbar muss Ich bei UDP &quot; <strong>Bind&quot;</strong> anstelle von <strong>&quot;Listen&quot;</strong> verwenden... aber leider funktioniert es trotzdem nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/29927</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/29927</guid><dc:creator><![CDATA[Jackler]]></dc:creator><pubDate>Mon, 09 Jun 2003 13:52:00 GMT</pubDate></item><item><title><![CDATA[Reply to Socket(s) auf UDP-Basis... on Thu, 12 Jun 2003 09:37:00 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>hat vielleicht einer von Euch ein Beispiel für die Verwendung von UDP-Socket(s) unter Verwendung von MFC (--&gt; CAsyncSocket)?</p>
<p>Oder kann mir jemand einen Tipp geben, wie Ich bei Verwendung von UDP vorgehen muss (TCP funktioniert wunderbar)...</p>
<p>Ciao,<br />
-Jackler</p>
]]></description><link>https://www.c-plusplus.net/forum/post/29928</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/29928</guid><dc:creator><![CDATA[Jackler]]></dc:creator><pubDate>Thu, 12 Jun 2003 09:37:00 GMT</pubDate></item><item><title><![CDATA[Reply to Socket(s) auf UDP-Basis... on Sun, 15 Jun 2003 09:33:00 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>hab' nun auch mit UDP hinbekommen... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<pre><code class="language-cpp">void CServerDlg::OnButtonListen() 
{
    // Variablen mit Steuerelementen synchronisieren
    UpdateData(TRUE);   

    // Steuerelemente deaktivieren
    GetDlgItem(IDC_RADIO_TCP)-&gt;EnableWindow(FALSE);
    GetDlgItem(IDC_RADIO_UDP)-&gt;EnableWindow(FALSE);
    GetDlgItem(IDC_EDIT_PORTNUMBER)-&gt;EnableWindow(FALSE);
    GetDlgItem(IDC_SPIN_PORTINC)-&gt;EnableWindow(FALSE);
    GetDlgItem(IDC_BUTTON_LISTEN)-&gt;EnableWindow(FALSE);
    GetDlgItem(IDC_BUTTON_EXIT)-&gt;EnableWindow(FALSE);
    GetDlgItem(IDC_BUTTON_ABOUT)-&gt;EnableWindow(FALSE);

    GetDlgItem(IDC_BUTTON_STOP)-&gt;EnableWindow(TRUE);

    // wurde TCP oder UDP ausgewählt?
    if (m_iSocketType == 0)
    {
        /**
         * TCP
         */
        // Socket erzeugen
    m_sListenSocket.Create(m_iPortnumber, SOCK_STREAM);

    // auf Verbindungsanfragen warten
    m_sListenSocket.Listen();
    }
    else
    {
        /**
     * UDP
     */     
    // Socket erzeugen
    m_sListenSocket.Create(m_iPortnumber, SOCK_DGRAM);

    struct sockaddr_in addr;

    // zuerst alles auf 0 setzen
    memset(&amp;addr, 0, sizeof(addr));

    addr.sin_family = AF_INET;
    addr.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
    addr.sin_port = htons(m_iPortnumber);

    // Socket binden
    m_sListenSocket.Bind((struct sockaddr*)&amp;addr, sizeof(addr));        
    }
}
</code></pre>
<p>Noch ganz wichtig, die Funktion <strong>OnReceive()</strong>:</p>
<pre><code class="language-cpp">void CServerDlg::OnReceive()
{
    char *pBuf = new char[1025];
    int iBufSize = 1024;
    CString strRcvd;
    int iRcvd, iSent;

    // wurde TCP oder UDP ausgewählt?
    if (m_iSocketType == 0)
    {
        /**
         * TCP
     */
    int iLen;

    // Nachricht empfangen
    iRcvd = m_sConnectSocket.Receive(pBuf, iBufSize);

    // Wurde etwas empfangen?
    if(iRcvd == SOCKET_ERROR)
    {
    }
    else
    {
            // Ende der Nachricht abschneiden
            pBuf[iRcvd] = NULL;

            // Nachricht in einen CString kopieren
        strRcvd = pBuf;

            iLen = strRcvd.GetLength();

        // Nachricht senden
        iSent = m_sConnectSocket.Send(LPCTSTR(strRcvd), iLen);      
    }
    }
    else
    {
        /**
     * UDP
     */     
    int laddr;

    struct sockaddr_in addr;
    struct sockaddr *paddr;

    // zuerst alles auf 0 setzen
    memset(&amp;addr, 0, sizeof(addr));

    addr.sin_family = AF_INET;
    addr.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
    addr.sin_port = htons(m_iPortnumber);

    paddr = (struct sockaddr*)&amp;addr;
    laddr = sizeof(addr);

    // Empfangen... --&gt; recvfrom
    iRcvd = m_sListenSocket.ReceiveFrom(pBuf, iBufSize, paddr, &amp;laddr);

    // Wurde etwas empfangen?
    if(iRcvd == SOCKET_ERROR)
    {
    }
    else
    {
        // Ende der Nachricht abschneiden
        pBuf[iRcvd] = NULL;

        // Senden... --&gt; sendto
        iSent = m_sListenSocket.SendTo(pBuf, iBufSize, paddr, sizeof(addr));
    }
    }
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/29929</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/29929</guid><dc:creator><![CDATA[Jackler]]></dc:creator><pubDate>Sun, 15 Jun 2003 09:33:00 GMT</pubDate></item></channel></rss>