<?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[CAsyncSocket::ReceiveFrom]]></title><description><![CDATA[<p>Grüsse zusammen,</p>
<p>Hab jetzt endlich so einiges hinbekommen und bin glaub ich kurz davor ein Ping/Echo Programm schreiben zu können. Allerdings habe ich noch ein zwei Verständnisfragen und ein Problem, welche mir hoffentlich erklärt werden können.</p>
<p>Ich erstelle ein SOCK_DGRAM Socket und sende mit SendTo 32 Byte Daten zu irgendeiner IP-Adresse. Hier kommt eigentlich schon die erste Frage:<br />
Beim Echo/Ping werden diese Daten zurückgesandt, wieso? Bzw. wieso weiss die Maschine oder was auch immer an der anderen Adresse, dass die Daten zurückgesendet werden sollen? Passiert dies automatisch?<br />
Es scheint jedenfalls automatisch zu geschehen, denn kurz darauf, wenn die IP gültig ist, bekomme ich ein OnReceive Ereignis in meiner von CAsyncSocket abgeleiteten Klasse. Also habe ich dort ein ReceiveFrom eingefügt umd die Daten auszulesen. Doch hier wird mir dann immer ein SOCKET_ERROR zurückgegeben. Wenn ich sofort danach GetLastError (oder WSAGetLastError) aufrufe, gibt der mir 0 zurück. Das würde ja dann bedeuten, dass alles einwandfrei funktioniert hat, was aber eben nicht der Fall ist. Hat einer eine Idee? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Womöglich mache ich auch was komplett falsch, bin immer noch völlig unerfahren in dieser Netzwerk/Internet Programmierung ^^</p>
<p>Grüssli und danke im voraus.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/157341/casyncsocket-receivefrom</link><generator>RSS for Node</generator><lastBuildDate>Mon, 27 Jul 2026 01:07:41 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/157341.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 24 Aug 2006 17:26:49 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to CAsyncSocket::ReceiveFrom on Thu, 24 Aug 2006 17:26:49 GMT]]></title><description><![CDATA[<p>Grüsse zusammen,</p>
<p>Hab jetzt endlich so einiges hinbekommen und bin glaub ich kurz davor ein Ping/Echo Programm schreiben zu können. Allerdings habe ich noch ein zwei Verständnisfragen und ein Problem, welche mir hoffentlich erklärt werden können.</p>
<p>Ich erstelle ein SOCK_DGRAM Socket und sende mit SendTo 32 Byte Daten zu irgendeiner IP-Adresse. Hier kommt eigentlich schon die erste Frage:<br />
Beim Echo/Ping werden diese Daten zurückgesandt, wieso? Bzw. wieso weiss die Maschine oder was auch immer an der anderen Adresse, dass die Daten zurückgesendet werden sollen? Passiert dies automatisch?<br />
Es scheint jedenfalls automatisch zu geschehen, denn kurz darauf, wenn die IP gültig ist, bekomme ich ein OnReceive Ereignis in meiner von CAsyncSocket abgeleiteten Klasse. Also habe ich dort ein ReceiveFrom eingefügt umd die Daten auszulesen. Doch hier wird mir dann immer ein SOCKET_ERROR zurückgegeben. Wenn ich sofort danach GetLastError (oder WSAGetLastError) aufrufe, gibt der mir 0 zurück. Das würde ja dann bedeuten, dass alles einwandfrei funktioniert hat, was aber eben nicht der Fall ist. Hat einer eine Idee? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Womöglich mache ich auch was komplett falsch, bin immer noch völlig unerfahren in dieser Netzwerk/Internet Programmierung ^^</p>
<p>Grüssli und danke im voraus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1124010</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1124010</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Thu, 24 Aug 2006 17:26:49 GMT</pubDate></item><item><title><![CDATA[Reply to CAsyncSocket::ReceiveFrom on Thu, 24 Aug 2006 17:52:39 GMT]]></title><description><![CDATA[<p>Dravere schrieb:</p>
<blockquote>
<p>Beim Echo/Ping werden diese Daten zurückgesandt, wieso? Bzw. wieso weiss die Maschine oder was auch immer an der anderen Adresse, dass die Daten zurückgesendet werden sollen? Passiert dies automatisch?</p>
</blockquote>
<p>ja. parallel zu udp und tcp haben die meisten kisten noch icmp (internet control message protocol). wenn man dem ein echo-request schickt (mit dem ping programm) dann schicken die's zurück. geht alles automnatisch.<br />
vielleicht interessiert dich das: <a href="http://www.c-worker.ch/winsock/ping.cpp" rel="nofollow">http://www.c-worker.ch/winsock/ping.cpp</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1124027</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1124027</guid><dc:creator><![CDATA[net 0]]></dc:creator><pubDate>Thu, 24 Aug 2006 17:52:39 GMT</pubDate></item><item><title><![CDATA[Reply to CAsyncSocket::ReceiveFrom on Thu, 24 Aug 2006 18:27:52 GMT]]></title><description><![CDATA[<p>Kenne ich schon. Ist aber leider alles mit der WinSock2 API gemacht. Ich probier das irgendwie mit der MFC hinzubiegen ^^</p>
<p>Hmmm sorry wenn ich jetzt Frage, aber ich habe echte mühe mit dem ganzen Zeugs, da mir irgendwie gewisse Sachen nirgends beantwortet werden.</p>
<p>Wenn ich jetzt per UDP Daten an eine IP sende, werden die automatisch zurückgesendet? Oder müssen diese Daten einer bestimmten Struktur entsprechen um ein Echo zu erzeugen? Wenn sie einer bestimmten Struktur enstprechen müssen, dann hätte ich gerne mal eine sinnvolle Erklärung wie die Struktur aussehen muss, welche gesendet und die welche bekommen wird.</p>
<p>Zudem was ist immer dieses SOCK_RAW. Ich kann mit der MFC-Klasse nur SOCK_STREAM und SOCK_DGRAM erzeugen, zumindest laut MSDN.</p>
<p>Und dann noch die letzte Frage. Was für ein Fehler ist passiert, wenn ich bei CAsyncSocket::ReceiveFrom (oder halt recvfrom) ein SOCKET_ERROR zurückbekomme, in GetLastError aber 0 drin steht?</p>
<p>Grüssli und danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1124065</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1124065</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Thu, 24 Aug 2006 18:27:52 GMT</pubDate></item><item><title><![CDATA[Reply to CAsyncSocket::ReceiveFrom on Thu, 24 Aug 2006 18:39:44 GMT]]></title><description><![CDATA[<p>hihi,</p>
<p>habe soeben anhand eines tutorials begonnen mich in die materie einzuarbeiten. mein erstes problem ist die class CAsyncSocket zu bekommen.<br />
kann mir jemand sagen wo ich die herbekomme.<br />
oder vielleicht kann mir die auch jemand mailen.<br />
eine passende header-datei habe ich nicht gefunden.</p>
<p>so wie sich das liest, ist es ja nicht ganz trivial von einer ip-adresse daten auszulesen. ich bin gespannt, wie oft ich eure hilfe hierzu noch in anspruch nehmen muss.</p>
<p>lieb grüße</p>
<p>andrea</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1124073</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1124073</guid><dc:creator><![CDATA[andrea19791]]></dc:creator><pubDate>Thu, 24 Aug 2006 18:39:44 GMT</pubDate></item><item><title><![CDATA[Reply to CAsyncSocket::ReceiveFrom on Thu, 24 Aug 2006 23:10:45 GMT]]></title><description><![CDATA[<p>Meine Fragen haben sich erübrigt. Ich habe es endlich so langsam geschnallt. Eigentlich bleibt nur noch ein Verständnisproblem mit der letzten Frage übrig, aber ich denke mal, dass es dann darauf zurückzuführen ist, dass ich das ganze ein wenig falsch benutze ^^</p>
<p>Danke fürs lesen.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/12810">@andrea19791</a><br />
CAsyncSocket ist Bestandteil der MFC. Deshalb schreib ich es ja auch ins MFC Forum.<br />
<a href="http://msdn2.microsoft.com/en-us/library/3d46645f.aspx" rel="nofollow">CAsyncSocket</a><br />
<a href="http://msdn2.microsoft.com/en-us/library/wxzt95kb.aspx" rel="nofollow">CSocket</a><br />
<a href="http://msdn2.microsoft.com/en-us/library/1e4zc0sx.aspx" rel="nofollow">CSocketFile</a></p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1124152</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1124152</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Thu, 24 Aug 2006 23:10:45 GMT</pubDate></item><item><title><![CDATA[Reply to CAsyncSocket::ReceiveFrom on Fri, 25 Aug 2006 07:51:12 GMT]]></title><description><![CDATA[<p>@andrea:<br />
um mit sockets zu experimentieren braucht man keine speziellen klassen. dafür reicht die gewöhnliche 'socket api'. das ist, meiner meinung nach, sogar besser wenn man erstmal lernen will wie's funktioniert. schliesslich ist 'information hiding' einer der stützpfeiler der oop und deshalb bekommt man durch die anwendung von fertigen klassen kein tiefenverständnis.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/9752">@dravere</a>:<br />
ich nehme an, die CAsyncSocket ruft selber schon 'GetLastError' auf, weshalb du 0 zurückbekommst (der errorstatus wird durch einen einmaligen aufruf wieder zurückgesetzt). bei asynchronen sockets gibt es oft 'SOCKET_ERROR' weil die operation noch nicht abgeschlossen ist (richtiger wäre ein 'SOCKET_PENDING' aber wir wollen ja nicht schon wieder über m$ meckern <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="😉"
    /> ). wenn du direkt nach einer nonblocking socket-aktion 'WSAGetLastError' aufrufst, solltest du ein WSAEWOULDBLOCK bekommen, was soviel heisst wie 'alles ok aber ich bin noch beschäftigt'</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1124253</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1124253</guid><dc:creator><![CDATA[net 0]]></dc:creator><pubDate>Fri, 25 Aug 2006 07:51:12 GMT</pubDate></item><item><title><![CDATA[Reply to CAsyncSocket::ReceiveFrom on Fri, 25 Aug 2006 08:30:48 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/3162">@net</a><br />
Wäre ja schön, wenn es denn so wäre. Ich rufe gleich, wirklich gleich, nach dem ReceiveFrom, welches SOCKET_ERROR zurückliefert, GetLastError auf. Ich habe mir den Code von ReceiveFrom angeschaut, dort drin wird nie, auch nicht in einer Unterfunktion GetLastError aufgerufen. Und laut MSDN soll man ja gleich nach dem Aufruf von ReceiveFrom GetLastError aufrufen können, wenn die Funktion SOCKET_ERROR zurückliefert. Aber es kommt immer und immer wieder nur ein 0 zurück, was soviel wie &quot;Kein Fehler!&quot; bedeutet. Begreif das eigentlich wirklich nicht, aber wie gesagt, ich denke mal eher, es kommt daher, dass ich in dem Programm die Socketsache noch ein wenig falsch verwende.</p>
<p>Aja und noch zu deiner Aussage an andrea. CAsyncSocket ist so schlicht gehalten, dass man die Grundlage so oder so lernen muss. Oder anderst gesagt, CAsyncSocket ist fast keine Hilfe. Das einzige was es eigentlich macht, ist eine Kopplung vom Socket Handle. Man muss also nicht mehr immer das Socket übergeben bei einer Funktion, sondern die Funktion der Klasse CAsyncSocket macht das selber. Naja und dann hat es noch ein, zwei Erleichterungen in der IP Übergabe, aber das ist schon bald einmal alles.<br />
Aber das ist ja auch normal bei der MFC <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1124284</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1124284</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Fri, 25 Aug 2006 08:30:48 GMT</pubDate></item><item><title><![CDATA[Reply to CAsyncSocket::ReceiveFrom on Fri, 25 Aug 2006 12:09:11 GMT]]></title><description><![CDATA[<p>Dravere schrieb:</p>
<blockquote>
<p>...ich denke mal eher, es kommt daher, dass ich in dem Programm die Socketsache noch ein wenig falsch verwende.</p>
</blockquote>
<p>jo, schon komisch, finde ich auch. vielleicht kannste deinen code mal damit <a href="http://simplesamples.info/MFC/UDPSendReceive.php" rel="nofollow">http://simplesamples.info/MFC/UDPSendReceive.php</a> vergleichen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1124368</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1124368</guid><dc:creator><![CDATA[net 0]]></dc:creator><pubDate>Fri, 25 Aug 2006 12:09:11 GMT</pubDate></item></channel></rss>