<?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[CSocket: Warum wird OnSend oder OnReceive nicht aufgrufen?]]></title><description><![CDATA[<p>Hi Leute und zwar will ich eine Socket verbindung aufbauen - alles scheint wunderbar zu funktionieren - der Server erhält alle daten und kann reagieren. Nur, der client (CSocket) ruft mir die OnBlaa() FUnktionen einfach nicht auf?</p>
<p>Evt. sieht jemand von euch das Problem?</p>
<pre><code>class CMySocket : public CSocket //CAsyncSocket
{

public:
	virtual void OnConnect(int nErrorCode);
	virtual void OnClose(int nErrorCode);

	virtual void OnAccept(int nErrorCode);

	virtual void OnReceive(int nErrorCode);
	virtual void OnSend(int nErrorCode);

};

...

void CMySocket::OnReceive(int nErrorCode)
{
	OutputDebugString( &quot;\nWow, wir haben daten empfagen :)&quot; );
}
</code></pre>
<p>Wie gesagt, daten kann ich wunderbar verschicken...</p>
<pre><code>CMySocket socket;
	socket.Create();
	socket.Connect( &quot;127.0.0.1&quot;, 1234 );

	char s_request[] = &quot;[test]request\n&quot;;

	socket.Send( s_request, strlen(s_request) );
	socket.Close();
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/188970/csocket-warum-wird-onsend-oder-onreceive-nicht-aufgrufen</link><generator>RSS for Node</generator><lastBuildDate>Sat, 11 Apr 2026 20:04:40 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/188970.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 07 Aug 2007 06:12:24 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to CSocket: Warum wird OnSend oder OnReceive nicht aufgrufen? on Tue, 07 Aug 2007 06:12:24 GMT]]></title><description><![CDATA[<p>Hi Leute und zwar will ich eine Socket verbindung aufbauen - alles scheint wunderbar zu funktionieren - der Server erhält alle daten und kann reagieren. Nur, der client (CSocket) ruft mir die OnBlaa() FUnktionen einfach nicht auf?</p>
<p>Evt. sieht jemand von euch das Problem?</p>
<pre><code>class CMySocket : public CSocket //CAsyncSocket
{

public:
	virtual void OnConnect(int nErrorCode);
	virtual void OnClose(int nErrorCode);

	virtual void OnAccept(int nErrorCode);

	virtual void OnReceive(int nErrorCode);
	virtual void OnSend(int nErrorCode);

};

...

void CMySocket::OnReceive(int nErrorCode)
{
	OutputDebugString( &quot;\nWow, wir haben daten empfagen :)&quot; );
}
</code></pre>
<p>Wie gesagt, daten kann ich wunderbar verschicken...</p>
<pre><code>CMySocket socket;
	socket.Create();
	socket.Connect( &quot;127.0.0.1&quot;, 1234 );

	char s_request[] = &quot;[test]request\n&quot;;

	socket.Send( s_request, strlen(s_request) );
	socket.Close();
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1339883</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1339883</guid><dc:creator><![CDATA[Delux]]></dc:creator><pubDate>Tue, 07 Aug 2007 06:12:24 GMT</pubDate></item><item><title><![CDATA[Reply to CSocket: Warum wird OnSend oder OnReceive nicht aufgrufen? on Tue, 07 Aug 2007 10:18:21 GMT]]></title><description><![CDATA[<p>Hmm, keiner ne Idee? <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1340020</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1340020</guid><dc:creator><![CDATA[Delux]]></dc:creator><pubDate>Tue, 07 Aug 2007 10:18:21 GMT</pubDate></item><item><title><![CDATA[Reply to CSocket: Warum wird OnSend oder OnReceive nicht aufgrufen? on Tue, 07 Aug 2007 10:38:29 GMT]]></title><description><![CDATA[<p>Ist etwas wenig code um den Fehler festzustellen.</p>
<p>MSDN: In CSocket, the OnConnect notification function is never called. For connections, you simply call Connect, which will return when the connection is completed (either successfully or in error). How connection notifications are handled is an MFC implementation detail.</p>
<p>IMHO sind diese Notify alles Funktionen von CAsyncSocket.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1340033</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1340033</guid><dc:creator><![CDATA[Unix-Tom]]></dc:creator><pubDate>Tue, 07 Aug 2007 10:38:29 GMT</pubDate></item><item><title><![CDATA[Reply to CSocket: Warum wird OnSend oder OnReceive nicht aufgrufen? on Tue, 07 Aug 2007 10:49:24 GMT]]></title><description><![CDATA[<p>Naja mehr code existiert gar nicht <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>
<p>Über einen Button rufe ich den Code auf</p>
<pre><code>void CServerTestDlg::OnBnClickedButton1()
{
	CMySocket socket;
	socket.Create( 0, SOCK_STREAM );
	socket.Connect( &quot;127.0.0.1&quot;, 1234);

	char s_request[] = &quot;[test]request\n&quot;;

	socket.Send( s_request, strlen(s_request) );
	socket.Close();
}
</code></pre>
<p>Ich hab anstatt CAsyncSocket jetzt mal CSocket ausprobiert, klappt ebenfalls nur das verschicken, ich bekomme einfach keine Nachrichten auf meine Handler (OnReceive oder OnSend). <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>
<pre><code>void CMySocket::OnConnect(int nErrorCode)
{
	OutputDebugString( &quot;\nWow, wir haben daten empfagen :)&quot; );
}

void CMySocket::OnClose(int nErrorCode)
{
	OutputDebugString( &quot;\nWow, wir haben daten empfagen :)&quot; );
}

void CMySocket::OnAccept(int nErrorCode)
{
	OutputDebugString( &quot;\nWow, wir haben daten empfagen :)&quot; );
}

void CMySocket::OnReceive(int nErrorCode)
{
OutputDebugString( &quot;\nWow, wir haben daten empfagen :)&quot; );
}

void CMySocket::OnSend(int nErrorCode)
{
	OutputDebugString( &quot;\nWow, wir haben daten gesendet :)&quot; );
}
</code></pre>
<p>Es tut sich einfach gar nichts!!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1340048</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1340048</guid><dc:creator><![CDATA[Delux]]></dc:creator><pubDate>Tue, 07 Aug 2007 10:49:24 GMT</pubDate></item><item><title><![CDATA[Reply to CSocket: Warum wird OnSend oder OnReceive nicht aufgrufen? on Tue, 07 Aug 2007 10:51:20 GMT]]></title><description><![CDATA[<p>Hab gerade etwas interessantes gefunden (Gilt nur für CAsyncSocket)</p>
<pre><code>BOOL Create(
   UINT nSocketPort = 0,
   int nSocketType = SOCK_STREAM,
   long lEvent = FD_READ | FD_WRITE | FD_OOB | FD_ACCEPT | FD_CONNECT | FD_CLOSE,
   LPCTSTR lpszSocketAddress = NULL 
);
....
 lEvent

A bitmask which specifies a combination of network events in which the application is interested.

        * FD_READ   Want to receive notification of readiness for reading.
        * FD_WRITE   Want to receive notification of readiness for writing.
        * FD_OOB   Want to receive notification of the arrival of out-of-band data.
        * FD_ACCEPT   Want to receive notification of incoming connections.
        * FD_CONNECT   Want to receive notification of completed connection.
        * FD_CLOSE   Want to receive notification of socket closure.
</code></pre>
<p>Hab das mal in die Create Funktion mit eingebracht, funktioniert aber auch nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1340053</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1340053</guid><dc:creator><![CDATA[Delux]]></dc:creator><pubDate>Tue, 07 Aug 2007 10:51:20 GMT</pubDate></item><item><title><![CDATA[Reply to CSocket: Warum wird OnSend oder OnReceive nicht aufgrufen? on Tue, 07 Aug 2007 11:06:48 GMT]]></title><description><![CDATA[<p>Okay, scheint wohl alles zu klappen. Hab im Button den socket erstellt und vermutlich war das objekt bereits beseitigt, bevor er die nachrichten auswerten konnte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1340065</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1340065</guid><dc:creator><![CDATA[Delux]]></dc:creator><pubDate>Tue, 07 Aug 2007 11:06:48 GMT</pubDate></item><item><title><![CDATA[Reply to CSocket: Warum wird OnSend oder OnReceive nicht aufgrufen? on Tue, 07 Aug 2007 11:20:38 GMT]]></title><description><![CDATA[<p>Wenn ich mich nicht irre, dann kannst du die Nachrichtenbehandlung (OnReceive, OnAccept...) nur mit dem CAsyncSocket nutzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1340076</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1340076</guid><dc:creator><![CDATA[Chris++ 0]]></dc:creator><pubDate>Tue, 07 Aug 2007 11:20:38 GMT</pubDate></item><item><title><![CDATA[Reply to CSocket: Warum wird OnSend oder OnReceive nicht aufgrufen? on Tue, 07 Aug 2007 11:38:14 GMT]]></title><description><![CDATA[<p>Chris++ schrieb:</p>
<blockquote>
<p>Wenn ich mich nicht irre, dann kannst du die Nachrichtenbehandlung (OnReceive, OnAccept...) nur mit dem CAsyncSocket nutzen.</p>
</blockquote>
<p>Also hab das ganze wunderbar mit CSocket hinbekommen. Nur komm ich jetzt zum Problem, dass ich keine neuen Verbindungen mehr aufbauen kann wenn die erste verbindung geschlossen wurde (egal vom server oder von selbst)</p>
<p>Hab den Socker im der MainKlase (OnInit) erstellt und will immer alle 5 sekunden den Server connecten.<br />
Beim ersten mal klappt alles wirklich perfekt. Die weitere connect versuche erzielen keine Ergebnisse?</p>
<p>Ich erhalte nur ein TryConnect <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>
<pre><code>void CServerTestDlg::OnTimer( UINT id  )
{
	OutputDebugString(&quot;Try connect&quot;);
	socket.Connect( &quot;kf2&quot;, 4440 );
	char s_request[] = &quot;[test]table_request\n&quot;;
	socket.Send( s_request, strlen(s_request) );
	socket.Close();
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1340094</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1340094</guid><dc:creator><![CDATA[Delux]]></dc:creator><pubDate>Tue, 07 Aug 2007 11:38:14 GMT</pubDate></item><item><title><![CDATA[Reply to CSocket: Warum wird OnSend oder OnReceive nicht aufgrufen? on Tue, 07 Aug 2007 13:01:44 GMT]]></title><description><![CDATA[<p>Kann mir dabei keiner Helfen? Irgendwie beendet der die Verbindung nicht, hab mal GetLastError bei connect() abgefangen und da kommt folgende Melsung bei heraus:</p>
<p>WSAEISCONN<br />
10056 A connect request was made on an already connected socket.</p>
<p>Was mich etwas verwirrt:<br />
ICh erhalte eine OnClose Nachricht, und danach möchte ich connected und dabei erhalten ich den 10056 fehler. <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1340164</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1340164</guid><dc:creator><![CDATA[DElux]]></dc:creator><pubDate>Tue, 07 Aug 2007 13:01:44 GMT</pubDate></item><item><title><![CDATA[Reply to CSocket: Warum wird OnSend oder OnReceive nicht aufgrufen? on Tue, 07 Aug 2007 13:39:28 GMT]]></title><description><![CDATA[<p>Poste mal etwas mehr Code (also alles was relevant ist). Die kleine Timerfunktion reicht nicht aus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1340195</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1340195</guid><dc:creator><![CDATA[Chris++ 0]]></dc:creator><pubDate>Tue, 07 Aug 2007 13:39:28 GMT</pubDate></item><item><title><![CDATA[Reply to CSocket: Warum wird OnSend oder OnReceive nicht aufgrufen? on Tue, 07 Aug 2007 14:10:15 GMT]]></title><description><![CDATA[<p>Ok:</p>
<p>Meine Socket-Klasse:</p>
<p>CMySocket.h</p>
<pre><code class="language-cpp">class CMySocket : public CSocket
{

public:
	//void Init();
	virtual void OnConnect(int nErrorCode);
	virtual void OnClose(int nErrorCode);

	virtual void OnAccept(int nErrorCode);

	virtual void OnReceive(int nErrorCode);
	virtual void OnSend(int nErrorCode);

};
</code></pre>
<p>CMySocket.cpp</p>
<pre><code class="language-cpp">#include &quot;stdafx.h&quot;

/*void CMySocket::Init()
{
	//this-&gt;PumpMessages(FD_READ);
}*/

void CMySocket::OnConnect(int nErrorCode)
{
	CSocket::OnConnect( nErrorCode );
	OutputDebugString( &quot;\nOnConnect&quot; );
}

void CMySocket::OnClose(int nErrorCode)
{
	CSocket::OnClose( nErrorCode );
	OutputDebugString( &quot;\nOnClose&quot; );
	this-&gt;Close();
}

void CMySocket::OnAccept(int nErrorCode)
{
	CSocket::OnAccept( nErrorCode );
	OutputDebugString( &quot;\nOnAccept&quot; );
}

void CMySocket::OnReceive(int nErrorCode)
{
	CSocket::OnReceive( nErrorCode );
	OutputDebugString( &quot;\nOnReceive&quot; );

    char *Buffer = new char[1025];
    int BufferSize = 1024;
    int Rcvd;
    //CString strRecvd;

    // Nachricht abholen
    Rcvd = this-&gt;Receive(Buffer, BufferSize);

    // Ende der Nachricht abschneiden
    Buffer[Rcvd] = NULL;

    // Nachricht in die CString-Variable verweisen
	//strRecvd = pBuf;
    //AfxMessageBox(strRecvd);
	OutputDebugString( Buffer );

	free( Buffer );
}

void CMySocket::OnSend(int nErrorCode)
{
	CSocket::OnSend( nErrorCode );
	OutputDebugString( &quot;\nOnSend&quot; );
}
</code></pre>
<p>Und hier der weitere Code:</p>
<p>PS: es ist egal ob ich in der Timer Funktion bin oder via Button auf den Connect auslöse, beides klappt einmalig und dann nicht mehr!!</p>
<pre><code class="language-cpp">BOOL CServerTestDlg::OnInitDialog()
{
	CDialog::OnInitDialog();

	// Add &quot;About...&quot; menu item to system menu.

	// IDM_ABOUTBOX must be in the system command range.
	ASSERT((IDM_ABOUTBOX &amp; 0xFFF0) == IDM_ABOUTBOX);
	ASSERT(IDM_ABOUTBOX &lt; 0xF000);

	CMenu* pSysMenu = GetSystemMenu(FALSE);
	if (pSysMenu != NULL)
	{
		CString strAboutMenu;
		strAboutMenu.LoadString(IDS_ABOUTBOX);
		if (!strAboutMenu.IsEmpty())
		{
			pSysMenu-&gt;AppendMenu(MF_SEPARATOR);
			pSysMenu-&gt;AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
		}
	}

	// Set the icon for this dialog.  The framework does this automatically
	//  when the application's main window is not a dialog
	SetIcon(m_hIcon, TRUE);			// Set big icon
	SetIcon(m_hIcon, FALSE);		// Set small icon

	AfxSocketInit();

	socket.Create(0, SOCK_STREAM );

	return TRUE;  // return TRUE  unless you set the focus to a control
}

void CServerTestDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
	if ((nID &amp; 0xFFF0) == IDM_ABOUTBOX)
	{
		CAboutDlg dlgAbout;
		dlgAbout.DoModal();
	}
	else
	{
		CDialog::OnSysCommand(nID, lParam);
	}
}

void CServerTestDlg::OnBnClickedButton1()
{
	// HIER DER VERBINDUNGSAUFBAU
	if( !socket.Connect( &quot;127.0.0.1&quot;, 4440 ) )
	{
		char buf[100];
		sprintf_s( buf, 100, &quot;\n: ERror-code: %i&quot;, socket.GetLastError() );

		OutputDebugString(buf);
	}
	else
	{
		char s_request[] = &quot;[test]table_request\n&quot;;
		socket.Send( s_request, strlen(s_request) );
	}
}

void CServerTestDlg::OnDestroy()
{
	CDialog::OnDestroy();

}

void CServerTestDlg::OnTimer(UINT id)
{

	CDialog::OnTimer( id );

	// TODO: Add your message handler code here
}
</code></pre>
<p>So und hier noch die zugehörige Dlg-Klasse:</p>
<pre><code class="language-cpp">// CServerTestDlg dialog
class CServerTestDlg : public CDialog
{
// Construction
public:
	CServerTestDlg(CWnd* pParent = NULL);	// standard constructor

// Dialog Data
	enum { IDD = IDD_SERVERTEST_DIALOG };

	protected:
	virtual void DoDataExchange(CDataExchange* pDX);	// DDX/DDV support

// Implementation
protected:
	HICON m_hIcon;
	CMySocket socket;

	// Generated message map functions
	virtual BOOL OnInitDialog();
	afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
	afx_msg void OnPaint();
	afx_msg HCURSOR OnQueryDragIcon();
	DECLARE_MESSAGE_MAP()
public:
	afx_msg void OnBnClickedButton1();
public:
	afx_msg void OnDestroy();
	afx_msg void OnTimer( UINT );
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1340227</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1340227</guid><dc:creator><![CDATA[Delux]]></dc:creator><pubDate>Tue, 07 Aug 2007 14:10:15 GMT</pubDate></item><item><title><![CDATA[Reply to CSocket: Warum wird OnSend oder OnReceive nicht aufgrufen? on Wed, 08 Aug 2007 16:36:42 GMT]]></title><description><![CDATA[<p>Und nu? kannst du jetzt was mit dem Code anfangen? <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1340972</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1340972</guid><dc:creator><![CDATA[Delux]]></dc:creator><pubDate>Wed, 08 Aug 2007 16:36:42 GMT</pubDate></item><item><title><![CDATA[Reply to CSocket: Warum wird OnSend oder OnReceive nicht aufgrufen? on Thu, 09 Aug 2007 16:28:05 GMT]]></title><description><![CDATA[<p>Ein CSocket-Objekt kann nur einmal connected werden,<br />
beim zweiten mal brauchst du ein zweites Objekt.<br />
Ist blöd, aber nicht zu ändern.<br />
Hoffe, das dir das hilft</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1341728</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1341728</guid><dc:creator><![CDATA[Sheel]]></dc:creator><pubDate>Thu, 09 Aug 2007 16:28:05 GMT</pubDate></item><item><title><![CDATA[Reply to CSocket: Warum wird OnSend oder OnReceive nicht aufgrufen? on Thu, 09 Aug 2007 16:31:42 GMT]]></title><description><![CDATA[<p>Bei dir ist ja nur das Problem gewesen,<br />
dass das Objekt zu früh zerstört wird, oder?</p>
<p>Jetzt hätte ich nämlich das gleiche Problem:<br />
Beim Server mit OnAccept, es wird einfach nicht aufgerufen.<br />
Weiss wer was?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1341732</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1341732</guid><dc:creator><![CDATA[Sheel]]></dc:creator><pubDate>Thu, 09 Aug 2007 16:31:42 GMT</pubDate></item><item><title><![CDATA[Reply to CSocket: Warum wird OnSend oder OnReceive nicht aufgrufen? on Fri, 10 Aug 2007 01:49:35 GMT]]></title><description><![CDATA[<p>Sheel schrieb:</p>
<blockquote>
<p>Ein CSocket-Objekt kann nur einmal connected werden,<br />
beim zweiten mal brauchst du ein zweites Objekt.<br />
Ist blöd, aber nicht zu ändern.<br />
Hoffe, das dir das hilft</p>
</blockquote>
<p>Hm, d.h. für jeden connect muss ich mir einen neues Objekt erstellen (werde das mal ausprobieren und hier weiteres posten, danke für den Tipp).</p>
<p>Sheel schrieb:</p>
<blockquote>
<p>Bei dir ist ja nur das Problem gewesen,<br />
dass das Objekt zu früh zerstört wird, oder?</p>
<p>Jetzt hätte ich nämlich das gleiche Problem:<br />
Beim Server mit OnAccept, es wird einfach nicht aufgerufen.<br />
Weiss wer was?</p>
</blockquote>
<p>Trifft das nur auf OnAccept zu oder ist das ein generelles Problem?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1341952</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1341952</guid><dc:creator><![CDATA[Delux]]></dc:creator><pubDate>Fri, 10 Aug 2007 01:49:35 GMT</pubDate></item><item><title><![CDATA[Reply to CSocket: Warum wird OnSend oder OnReceive nicht aufgrufen? on Fri, 10 Aug 2007 02:07:23 GMT]]></title><description><![CDATA[<p>Ok, scheint wohl eine Lösung zu sein, das Socket Objekt immer neu zu erstellen. Wichtig ist jedoch hierbei, dass das Objekt vor dem Connect neu erstellt wird und <strong>ACHTUNG</strong> - nach dem erfolgreichen Connect, worauf hin eine &quot;OnReceiv&quot; Message erwartet wird - darf das CSocket Objekt nicht gelöscht werden, da sonst diese Nachricht nicht mehr ankommt.</p>
<p>Folgender Code scheint vorerst zu funktionieren:</p>
<pre><code class="language-cpp">void MyDLG::OnConnect()
{
	if( m_socket ){
		m_socket-&gt;Close();
		delete m_socket;
	}

	// create new object
	m_socket = new CMySocket();
	m_socket-&gt;Create(0, SOCK_STREAM );
	if( !m_socket-&gt;Connect( &quot;127.0.0.1&quot;, 4440 ) )
	{
		OutputDebugString( &quot;\nERROR&quot; );
	}
	else
	{
		char s_request[] = &quot;[test]request\n&quot;;
		m_socket-&gt;Send( s_request, strlen(s_request) );
	}
}
</code></pre>
<p>Was hier aber immer noch nicht gelöst wurde - wie man sicher eine Verbindung beendet? Zwar wird jetzt vom Server die Verbindung nach dem Übertragen geschlossen (und eine &quot;close&quot;) nachricht geschickt, ist aber noch keine Schöne Art.</p>
<p>Ich werde versuchen eine Funktion zu schreiben, damit ich die Empfangenen Daten gut handeln kann:<br />
zb.</p>
<pre><code class="language-cpp">m_socket-&gt;Send( s_request, strlen(s_request) );
void *buffer;
DWORD dwSize;
m_socket-&gt;Receive( &amp;buffer, &amp;dwSize );
m_socket-&gt;ReceiveEx( &amp;buffer, 1024 );
</code></pre>
<p>Mal schauen was bei rauskommt. (Mal wieder ist JAVA unschlagbar!) <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1341953</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1341953</guid><dc:creator><![CDATA[Delux]]></dc:creator><pubDate>Fri, 10 Aug 2007 02:07:23 GMT</pubDate></item><item><title><![CDATA[Reply to CSocket: Warum wird OnSend oder OnReceive nicht aufgrufen? on Fri, 10 Aug 2007 10:28:09 GMT]]></title><description><![CDATA[<p>Zitat: Trifft das nur auf OnAccept zu oder ist das ein generelles Problem?</p>
<p>Weis ich leider nicht, da OnAccept nicht geht, kommt es sowieso zu keiner anderen On...-Funktion wie OnReceive oder so.</p>
<p>Client kann sich zwar erfolgreich connecten, aber<br />
das CSocket (oder auch CAsyncSocket, beide gleich) tut so, als wüsste<br />
es von keiner verbindung.</p>
<p>keine ahnung, was das ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1342106</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1342106</guid><dc:creator><![CDATA[Sheel]]></dc:creator><pubDate>Fri, 10 Aug 2007 10:28:09 GMT</pubDate></item><item><title><![CDATA[Reply to CSocket: Warum wird OnSend oder OnReceive nicht aufgrufen? on Fri, 10 Aug 2007 13:40:09 GMT]]></title><description><![CDATA[<p>Hast du auch an &quot;m_socket-&gt;Create(0, SOCK_STREAM ); &quot; gedacht?</p>
<p>Bzw. Beim Server m_socket-&gt;Create( PORT(zb.1234), SOCK_STREAM );</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1342225</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1342225</guid><dc:creator><![CDATA[Delux]]></dc:creator><pubDate>Fri, 10 Aug 2007 13:40:09 GMT</pubDate></item><item><title><![CDATA[Reply to CSocket: Warum wird OnSend oder OnReceive nicht aufgrufen? on Sat, 11 Aug 2007 11:12:49 GMT]]></title><description><![CDATA[<p>Natürlich, wenn man es mit CSocket macht:</p>
<p>if(xyz.Create( 1234/*Port*/ ) == 0){/*Fehler*/}<br />
if(xyz.Listen() == 0){/*Fehler*/}</p>
<p>Und danach sollte bei einem verbindeversuch<br />
void xyz::OnAccept(int){...} aufgerufen werden<br />
Machts aber nicht</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1342645</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1342645</guid><dc:creator><![CDATA[Sheel]]></dc:creator><pubDate>Sat, 11 Aug 2007 11:12:49 GMT</pubDate></item></channel></rss>