<?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[WSARcv ruft nicht Callback-Funktion auf]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>für eine Kommunikation über TCP/IP möchte ich die &quot;Overlapped socket I/O&quot; Funktion mit einer Callback-Funktion verwenden. WSARecv liefert auch wie beschrieben WSAEWOULDBLOCK als Fehlermeldung<br />
zurück, doch leider wird die Callback-Funktion nie aufgerufen. Hat jemand eine Ahnung was da schief gehen könnte? Laut Ethereal müsste das Programm Daten empfangen. Im folgenden ist mein Code exemplarisch abgebildet.</p>
<p>char buf[100];<br />
WSAOVERLAPPED wsaoverlapped;<br />
DWORD Flags=0;<br />
DWORD BytesReceived=0;</p>
<p>void CALLBACK CompletionROUTINE(<br />
IN DWORD dwError,<br />
IN DWORD cbTransferred,<br />
IN LPWSAOVERLAPPED lpOverlapped,<br />
IN DWORD dwFlags<br />
...<br />
);</p>
<p>int Recv()<br />
{<br />
int error;</p>
<p>pwsaoverlapped-&gt;Internal=0;<br />
pwsaoverlapped-&gt;InternalHigh=0;<br />
pwsaoverlapped-&gt;Offset=0;<br />
pwsaoverlapped-&gt;OffsetHigh=0;<br />
Flags=0;<br />
WSABuf.buf = (char *)buf;<br />
WSABuf.len = 100;<br />
error=WSARecv(s,&amp;WSABuf,1,&amp;BytesReceived,&amp;Flags,pwsaoverlapped,CompletionROUTINE);<br />
if(error==SOCKET_ERROR)<br />
{<br />
error=GetLastError();<br />
if(error==WSAEWOULDBLOCK)<br />
{<br />
return 1; // Callback wird aufgerufen<br />
}<br />
}<br />
}</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/124311/wsarcv-ruft-nicht-callback-funktion-auf</link><generator>RSS for Node</generator><lastBuildDate>Tue, 07 Jul 2026 08:30:49 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/124311.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 26 Oct 2005 13:15:00 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to WSARcv ruft nicht Callback-Funktion auf on Wed, 26 Oct 2005 13:15:00 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>für eine Kommunikation über TCP/IP möchte ich die &quot;Overlapped socket I/O&quot; Funktion mit einer Callback-Funktion verwenden. WSARecv liefert auch wie beschrieben WSAEWOULDBLOCK als Fehlermeldung<br />
zurück, doch leider wird die Callback-Funktion nie aufgerufen. Hat jemand eine Ahnung was da schief gehen könnte? Laut Ethereal müsste das Programm Daten empfangen. Im folgenden ist mein Code exemplarisch abgebildet.</p>
<p>char buf[100];<br />
WSAOVERLAPPED wsaoverlapped;<br />
DWORD Flags=0;<br />
DWORD BytesReceived=0;</p>
<p>void CALLBACK CompletionROUTINE(<br />
IN DWORD dwError,<br />
IN DWORD cbTransferred,<br />
IN LPWSAOVERLAPPED lpOverlapped,<br />
IN DWORD dwFlags<br />
...<br />
);</p>
<p>int Recv()<br />
{<br />
int error;</p>
<p>pwsaoverlapped-&gt;Internal=0;<br />
pwsaoverlapped-&gt;InternalHigh=0;<br />
pwsaoverlapped-&gt;Offset=0;<br />
pwsaoverlapped-&gt;OffsetHigh=0;<br />
Flags=0;<br />
WSABuf.buf = (char *)buf;<br />
WSABuf.len = 100;<br />
error=WSARecv(s,&amp;WSABuf,1,&amp;BytesReceived,&amp;Flags,pwsaoverlapped,CompletionROUTINE);<br />
if(error==SOCKET_ERROR)<br />
{<br />
error=GetLastError();<br />
if(error==WSAEWOULDBLOCK)<br />
{<br />
return 1; // Callback wird aufgerufen<br />
}<br />
}<br />
}</p>
]]></description><link>https://www.c-plusplus.net/forum/post/901173</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/901173</guid><dc:creator><![CDATA[Faust]]></dc:creator><pubDate>Wed, 26 Oct 2005 13:15:00 GMT</pubDate></item></channel></rss>