<?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[Noch nen Problem mit CAsyncSocket]]></title><description><![CDATA[<p>Ich wollte mal ein kleines Chat Programm schreiben, also eine Server Anwendung und eine Client Anwendung.<br />
Die Client Anwendung funktioniert auch bestens, aber ich habe noch Probleme mit der Server Version.<br />
Hier ist mal mein Code:</p>
<p><strong>Server Klasse:</strong></p>
<pre><code class="language-cpp">CServer::CServer(){
cout &lt;&lt; (const TCHAR*)&quot;CServer Konstruktor&quot; &lt;&lt; endl;
m_sClient.SetParentClass(this);
m_sServer.SetParentClass(this);
m_sServer.Create(12345);
m_sServer.Listen();

};

void CServer::Loop(){

	/*
	WM_USER+1=Accept
	WM_USER+2=Receive
	WM_USER+3=Send
	WM_USER+4=Close
	*/
	MSG msg; 

	while(true){
		while (PeekMessage(&amp;msg, NULL, 0, 0, PM_REMOVE)){ 

			switch(msg.message){ 
			case WM_USER+1:
			cout &lt;&lt; (const TCHAR*)&quot;ankommende Verbindung&quot; &lt;&lt; endl;
            m_sServer.Accept(m_sClient);   
			} 
		} 

	}
}
</code></pre>
<p><strong>Meine abgeleitete Klasse von CAsyncSocket:</strong></p>
<pre><code class="language-cpp">MySocket::MySocket()
{
}

void MySocket::SetParentClass(CWinApp *parent){
	m_parent=parent;
}
MySocket::~MySocket()
{
}

/////////////////////////////////////////////////////////////////////////////
// Member-Funktion MySocket 

void MySocket::OnAccept(int nErrorCode) 
{
	// TODO: Speziellen Code hier einfügen und/oder Basisklasse aufrufen

	PostMessage(NULL,WM_USER+1,0,0);
	//m_parent-&gt;cout &lt;&lt; (const TCHAR*)&quot;Message erhalten&quot; &lt;&lt; endl;
	//CAsyncSocket::OnAccept(nErrorCode);
}

void MySocket::OnClose(int nErrorCode) 
{
	// TODO: Speziellen Code hier einfügen und/oder Basisklasse aufrufen
	PostMessage(NULL,WM_USER+4,0,0);
	CAsyncSocket::OnClose(nErrorCode);
}

void MySocket::OnReceive(int nErrorCode) 
{
	// TODO: Speziellen Code hier einfügen und/oder Basisklasse aufrufen
	PostMessage(NULL,WM_USER+2,0,0);
	CAsyncSocket::OnReceive(nErrorCode);
}

void MySocket::OnSend(int nErrorCode) 
{
	// TODO: Speziellen Code hier einfügen und/oder Basisklasse aufrufen
	PostMessage(NULL,WM_USER+3,0,0);
	CAsyncSocket::OnSend(nErrorCode);
}
</code></pre>
<p>Ich habe das ganze mit meinem Client und mit Telnet getestet, es kommt aber keine Verbindung zustande.<br />
Habe ich jetzt etwas falsch gemacht bei der Verwendung des Sockets oder in der Message Queue?<br />
Die Anwendung ist cmd-basiert mit MFC Unterstützung und mit MSVC++ erstellt.</p>
<p>Wäre nett wenn mir damit jemand helfen könnte...;)</p>
<p>edit: Ah und ja, ich rufe die Loop() Funktion nach der Erstellung der Klasse natürlich auf. Wenn ich eine Message mit PostMessage direkt in dem Loop erstelle, wird sie auch bearbeitet.</p>
<p>edit2: Habe herausgefunden dass ich erst noch AfxSocketInit(); ausführen muss... Jetzt kann ich zwar eine Verbindung herstellen, aber irgendwie wird das cout nicht ausgeführt...die Server Klasse scheint die Message also nicht zu bearbeiten...</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/68745/noch-nen-problem-mit-casyncsocket</link><generator>RSS for Node</generator><lastBuildDate>Sat, 27 Jun 2026 02:17:53 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/68745.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 20 Mar 2004 20:22:46 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Noch nen Problem mit CAsyncSocket on Sat, 20 Mar 2004 20:47:57 GMT]]></title><description><![CDATA[<p>Ich wollte mal ein kleines Chat Programm schreiben, also eine Server Anwendung und eine Client Anwendung.<br />
Die Client Anwendung funktioniert auch bestens, aber ich habe noch Probleme mit der Server Version.<br />
Hier ist mal mein Code:</p>
<p><strong>Server Klasse:</strong></p>
<pre><code class="language-cpp">CServer::CServer(){
cout &lt;&lt; (const TCHAR*)&quot;CServer Konstruktor&quot; &lt;&lt; endl;
m_sClient.SetParentClass(this);
m_sServer.SetParentClass(this);
m_sServer.Create(12345);
m_sServer.Listen();

};

void CServer::Loop(){

	/*
	WM_USER+1=Accept
	WM_USER+2=Receive
	WM_USER+3=Send
	WM_USER+4=Close
	*/
	MSG msg; 

	while(true){
		while (PeekMessage(&amp;msg, NULL, 0, 0, PM_REMOVE)){ 

			switch(msg.message){ 
			case WM_USER+1:
			cout &lt;&lt; (const TCHAR*)&quot;ankommende Verbindung&quot; &lt;&lt; endl;
            m_sServer.Accept(m_sClient);   
			} 
		} 

	}
}
</code></pre>
<p><strong>Meine abgeleitete Klasse von CAsyncSocket:</strong></p>
<pre><code class="language-cpp">MySocket::MySocket()
{
}

void MySocket::SetParentClass(CWinApp *parent){
	m_parent=parent;
}
MySocket::~MySocket()
{
}

/////////////////////////////////////////////////////////////////////////////
// Member-Funktion MySocket 

void MySocket::OnAccept(int nErrorCode) 
{
	// TODO: Speziellen Code hier einfügen und/oder Basisklasse aufrufen

	PostMessage(NULL,WM_USER+1,0,0);
	//m_parent-&gt;cout &lt;&lt; (const TCHAR*)&quot;Message erhalten&quot; &lt;&lt; endl;
	//CAsyncSocket::OnAccept(nErrorCode);
}

void MySocket::OnClose(int nErrorCode) 
{
	// TODO: Speziellen Code hier einfügen und/oder Basisklasse aufrufen
	PostMessage(NULL,WM_USER+4,0,0);
	CAsyncSocket::OnClose(nErrorCode);
}

void MySocket::OnReceive(int nErrorCode) 
{
	// TODO: Speziellen Code hier einfügen und/oder Basisklasse aufrufen
	PostMessage(NULL,WM_USER+2,0,0);
	CAsyncSocket::OnReceive(nErrorCode);
}

void MySocket::OnSend(int nErrorCode) 
{
	// TODO: Speziellen Code hier einfügen und/oder Basisklasse aufrufen
	PostMessage(NULL,WM_USER+3,0,0);
	CAsyncSocket::OnSend(nErrorCode);
}
</code></pre>
<p>Ich habe das ganze mit meinem Client und mit Telnet getestet, es kommt aber keine Verbindung zustande.<br />
Habe ich jetzt etwas falsch gemacht bei der Verwendung des Sockets oder in der Message Queue?<br />
Die Anwendung ist cmd-basiert mit MFC Unterstützung und mit MSVC++ erstellt.</p>
<p>Wäre nett wenn mir damit jemand helfen könnte...;)</p>
<p>edit: Ah und ja, ich rufe die Loop() Funktion nach der Erstellung der Klasse natürlich auf. Wenn ich eine Message mit PostMessage direkt in dem Loop erstelle, wird sie auch bearbeitet.</p>
<p>edit2: Habe herausgefunden dass ich erst noch AfxSocketInit(); ausführen muss... Jetzt kann ich zwar eine Verbindung herstellen, aber irgendwie wird das cout nicht ausgeführt...die Server Klasse scheint die Message also nicht zu bearbeiten...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/485160</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/485160</guid><dc:creator><![CDATA[--Fragman--]]></dc:creator><pubDate>Sat, 20 Mar 2004 20:47:57 GMT</pubDate></item><item><title><![CDATA[Reply to Noch nen Problem mit CAsyncSocket on Sun, 21 Mar 2004 16:25:35 GMT]]></title><description><![CDATA[<p>Kann mir niemand helfen? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /><br />
Für die Verwendung von Sockets muss ich doch nur afxsock.h bei #include reinpacken und diese AfxSocketInit() Funktion aufrufen oder fehlt da sonst noch was?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/485492</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/485492</guid><dc:creator><![CDATA[--Fragman--]]></dc:creator><pubDate>Sun, 21 Mar 2004 16:25:35 GMT</pubDate></item></channel></rss>