<?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[Hilfe bei Netzwerkprogrammierung]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich brauche ein wenig Hilfe bei der Programmierung einer Datenübertragung über das Ethernet.</p>
<p>Ich habe meinen Code unten gelistet, aber da funzt einiges noch nicht.<br />
Also der Code:</p>
<pre><code class="language-cpp">void Send()
{
    #define PORT=34000;
    AfxSocketInit(NULL);
    CSocket sockSrvr;
    sockSrvr.Create(PORT);
    sockSrvr.Listen();
    CSocket sockRecv;
    sockSrvr.Accept(sockRecv);
    CSocketFile myFile(&amp;sockRecv);
    CArchive arOut(&amp;myFile, CArchive::store);
    unsigned char buffer[10] = 
        {0x00,0xFF,0x10,0xEF,0x20,0xDF,0x30,0xCF,0x40,0xBF};
    CString str;
    arOut.Write(buffer,10);
    for (unsigned int iCount = 0; iCount &lt; 10; iCount++)
    {
        str.Format(&quot;%02X&quot;, buffer[iCount]);
        m_cListSender.Addstring(str);
    }
    arOut.Close();
    sockRecv.Close();
    UpdateData(FALSE);
}

void Receive()
{
    #define PORT 34000
    CSocket sockClient;
    sockClient.Create();
    sockClient.Connect(&quot;192.168.0.1&quot;, PORT);
    CSocketFile destFile(&amp;sockClient);
    CArchive arIn(&amp;destFile, CArchive::load);
    unsigned char buffer[10];
    unsigned int nr;
    CString str;
    nr = arIn.Read(buffer, 10);
    str.Format(&quot;%d&quot;,nr);
    m_cListReceiver.AddString(str);
    for (unsigned int iCount = 0; iCount &lt; 10; iCount++)
    {
        str.Format(&quot;%02X&quot;, buffer[iCount]);
        m_cListReceiver.AddString(str);
    }
    arIn.Close();
    sockClient.Close();
    UpdataData(FALSE);
}
</code></pre>
<p>Meine Probleme sind nun:</p>
<ol>
<li>Ruft der Sender die Fkt. Send() auf, der Empänger aber nicht die Receive() Fkt., so hängt der Sender. Wie kann man das abfangen?</li>
<li>Ruft der Empfänger die Fkt. Receive() auf, ohne dass vorher der Sender seine Send() Fkt. aufgerufen hat, so empfängt der Empfänger trotzdem; anscheinend irgendwelche Signalisierungsinformationen. Wie kann man dies untebinden, bzw. diese Bytes nicht in das Archiv einladen lassen?</li>
<li>Ein nochmaliger Send-Empfang-Vorgang schlägt fehl, anscheinend sind irgendwelche Puffer o.ä. nicht zuückgesetzt. Was ist da evtl. schiefgegangen?</li>
<li>Muss man bei der Wahl des PORTs irgendwas beachten?</li>
</ol>
<p>Es wäre nett, wenn mir jemand darauf Antworten bzw. Hinweise geben könnte. Bin in der Netzwerkprogrammierung noch sehr grün hinter den Ohren....</p>
<p>Danke.<br />
Grüße, JohnTK</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/84160/hilfe-bei-netzwerkprogrammierung</link><generator>RSS for Node</generator><lastBuildDate>Mon, 13 Apr 2026 00:36:27 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/84160.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 27 Aug 2004 10:22:59 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Hilfe bei Netzwerkprogrammierung on Fri, 27 Aug 2004 10:22:59 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich brauche ein wenig Hilfe bei der Programmierung einer Datenübertragung über das Ethernet.</p>
<p>Ich habe meinen Code unten gelistet, aber da funzt einiges noch nicht.<br />
Also der Code:</p>
<pre><code class="language-cpp">void Send()
{
    #define PORT=34000;
    AfxSocketInit(NULL);
    CSocket sockSrvr;
    sockSrvr.Create(PORT);
    sockSrvr.Listen();
    CSocket sockRecv;
    sockSrvr.Accept(sockRecv);
    CSocketFile myFile(&amp;sockRecv);
    CArchive arOut(&amp;myFile, CArchive::store);
    unsigned char buffer[10] = 
        {0x00,0xFF,0x10,0xEF,0x20,0xDF,0x30,0xCF,0x40,0xBF};
    CString str;
    arOut.Write(buffer,10);
    for (unsigned int iCount = 0; iCount &lt; 10; iCount++)
    {
        str.Format(&quot;%02X&quot;, buffer[iCount]);
        m_cListSender.Addstring(str);
    }
    arOut.Close();
    sockRecv.Close();
    UpdateData(FALSE);
}

void Receive()
{
    #define PORT 34000
    CSocket sockClient;
    sockClient.Create();
    sockClient.Connect(&quot;192.168.0.1&quot;, PORT);
    CSocketFile destFile(&amp;sockClient);
    CArchive arIn(&amp;destFile, CArchive::load);
    unsigned char buffer[10];
    unsigned int nr;
    CString str;
    nr = arIn.Read(buffer, 10);
    str.Format(&quot;%d&quot;,nr);
    m_cListReceiver.AddString(str);
    for (unsigned int iCount = 0; iCount &lt; 10; iCount++)
    {
        str.Format(&quot;%02X&quot;, buffer[iCount]);
        m_cListReceiver.AddString(str);
    }
    arIn.Close();
    sockClient.Close();
    UpdataData(FALSE);
}
</code></pre>
<p>Meine Probleme sind nun:</p>
<ol>
<li>Ruft der Sender die Fkt. Send() auf, der Empänger aber nicht die Receive() Fkt., so hängt der Sender. Wie kann man das abfangen?</li>
<li>Ruft der Empfänger die Fkt. Receive() auf, ohne dass vorher der Sender seine Send() Fkt. aufgerufen hat, so empfängt der Empfänger trotzdem; anscheinend irgendwelche Signalisierungsinformationen. Wie kann man dies untebinden, bzw. diese Bytes nicht in das Archiv einladen lassen?</li>
<li>Ein nochmaliger Send-Empfang-Vorgang schlägt fehl, anscheinend sind irgendwelche Puffer o.ä. nicht zuückgesetzt. Was ist da evtl. schiefgegangen?</li>
<li>Muss man bei der Wahl des PORTs irgendwas beachten?</li>
</ol>
<p>Es wäre nett, wenn mir jemand darauf Antworten bzw. Hinweise geben könnte. Bin in der Netzwerkprogrammierung noch sehr grün hinter den Ohren....</p>
<p>Danke.<br />
Grüße, JohnTK</p>
]]></description><link>https://www.c-plusplus.net/forum/post/592949</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/592949</guid><dc:creator><![CDATA[JohnTK]]></dc:creator><pubDate>Fri, 27 Aug 2004 10:22:59 GMT</pubDate></item><item><title><![CDATA[Reply to Hilfe bei Netzwerkprogrammierung on Fri, 27 Aug 2004 11:38:12 GMT]]></title><description><![CDATA[<p>JohnTK schrieb:</p>
<blockquote>
<ol>
<li>Ruft der Sender die Fkt. Send() auf, der Empänger aber nicht die Receive() Fkt., so hängt der Sender. Wie kann man das abfangen?</li>
</ol>
</blockquote>
<p>der hängt bei 'accept' und wartet auf eine verbindung.</p>
<p>JohnTK schrieb:</p>
<blockquote>
<ol start="2">
<li>Ruft der Empfänger die Fkt. Receive() auf, ohne dass vorher der Sender seine Send() Fkt. aufgerufen hat, so empfängt der Empfänger trotzdem; anscheinend irgendwelche Signalisierungsinformationen. Wie kann man dies untebinden, bzw. diese Bytes nicht in das Archiv einladen lassen?</li>
</ol>
</blockquote>
<p>er empfängt nichts. 'connect' bricht ab, weil die verbindungsaufnahme erfolglos war und dein programm erzeugt dann müll. du solltest abfragen, ob eine verbindung überhaupt aufgebaut wurde.</p>
<p>JohnTK schrieb:</p>
<blockquote>
<ol start="4">
<li>Muss man bei der Wahl des PORTs irgendwas beachten?</li>
</ol>
</blockquote>
<p>die ersten 1024 sind reserviert.<br />
die anderen kann man frei benutzen, aber am besten erst oberhalb von 50000<br />
guckst du: <a href="http://www.iana.org/assignments/port-numbers" rel="nofollow">http://www.iana.org/assignments/port-numbers</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/593030</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/593030</guid><dc:creator><![CDATA[net 0]]></dc:creator><pubDate>Fri, 27 Aug 2004 11:38:12 GMT</pubDate></item><item><title><![CDATA[Reply to Hilfe bei Netzwerkprogrammierung on Fri, 27 Aug 2004 15:21:50 GMT]]></title><description><![CDATA[<p>Okay danke erstmal.</p>
<p>Zu 1) Wie kann man einen TIMEOUT erzeugen, dass das Accept nur eine bestimmte Zeit auf eine Verbindung wartet? Gibt es ein Rückgabewert, den man dazu auswerten kann?<br />
Zu 2) Wie kann ich überprüfen, ob eine Verbindung besteht?</p>
<p>Die Klasse CSocket ist blockiernd, d.h. es macht Sinn den Netzwerkaufbau und -datenverkehr in einen Thread zu packen, oder? Das Programm soll kontinuierlich Daten über das Ethernet empfangen, und auf der Empfängerseite diese auch auswerten.<br />
Wie kann man es hinbekommen, dass man Daten bestimmter Menge empfängt, dann ein Ereignis auslöst, diese Daten in einem anderen Thread auswertet. Währenddessen soll der Empfangsthread aber weiter empfangen. Geht das? Und wie kann man es hinbekommen?</p>
<p>Danke,<br />
Grüße,<br />
JohnTK</p>
]]></description><link>https://www.c-plusplus.net/forum/post/593295</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/593295</guid><dc:creator><![CDATA[JohnTK]]></dc:creator><pubDate>Fri, 27 Aug 2004 15:21:50 GMT</pubDate></item></channel></rss>