<?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[Boost::Asio - Design vs. Asynchron]]></title><description><![CDATA[<p>Hallo,<br />
und zwar habe ich einen Synchronen TCP-Server, auf den mehrere Clients connecten sollen. Nun bin ich jedoch an dem Punkt, an dem ich nicht weiß ob Asynchronität oder neues Design-Konzept besser wäre. Und zwar geht es um folgende Methode:</p>
<pre><code class="language-cpp">void TCPSyncServer::ListenForSynchronisations()
{
	IsConnected = false;

	m_pSocket = new boost::asio::ip::tcp::socket(m_IOService);

	m_pAcceptor-&gt;accept(*m_pSocket);

	if(m_pSocket-&gt;is_open())
	{
		IsConnected = true;
		++ClientCnt;

		m_ptrlSocket.push_back(m_pSocket);

		std::cout&lt;&lt;&quot;Synchronisated successfully with Client!&quot;&lt;&lt;std::endl;

		for(;;)
		{
			m_MsgRecBuffer = GetMessageFromAllClients();

			m_tReceiver::iterator it
			(
				m_MsgRecBuffer.begin()
			);

			for(; it != m_MsgRecBuffer.end(); ++it)
			{
				if(it-&gt;get&lt;0&gt;() &gt; 0)
				{
					std::cout&lt;&lt;&quot;Message from Client[&quot;&lt;&lt; it-&gt;get&lt;2&gt;() &lt;&lt;&quot;]: &quot;;

					std::vector&lt;char&gt;::size_type loop(0);

					for(; loop != it-&gt;get&lt;0&gt;(); ++loop)
					{
						if(loop == it-&gt;get&lt;0&gt;())
							std::cout&lt;&lt; it-&gt;get&lt;1&gt;()[loop] &lt;&lt;std::endl;
						else
							std::cout&lt;&lt; it-&gt;get&lt;1&gt;()[loop] &lt;&lt;std::endl;
					}
				}
				else if(it-&gt;get&lt;0&gt;() &lt; 0)
					std::cout&lt;&lt;&quot;[Error] Failed to handle message from client&quot;&lt;&lt;std::endl;
			}
		}
	}
}
</code></pre>
<p>Wie mache ich es nun, dass jederzeit ein Client connecten kann? Ich bin jetzt einfach mal so dreist und poste den kompletten Code, vielleicht hat ja noch einer Verbesserungsvorschläge, denn mir gefällt die Klasse langsam nicht mehr:</p>
<pre><code class="language-cpp">#ifndef TCPSYNCSERVER_HEADER
#define TCPSYNCSERVER_HEADER

#include &quot;StdIncludes.h&quot;

namespace TCP
{

typedef std::vector&lt;boost::tuple&lt;std::size_t, 
								 std::vector&lt;char&gt;, 
								 unsigned int&gt;&gt; m_tReceiver;

class TCPSyncServer
{
	private:
		unsigned int									  ClientCnt;
		boost::asio::io_service                           m_IOService;
		boost::scoped_ptr&lt;boost::asio::ip::tcp::acceptor&gt; m_pAcceptor;
		boost::asio::ip::tcp::socket					  *m_pSocket;
		TCPSyncServer::m_tReceiver						  m_MsgRecBuffer; // For output
		boost::ptr_vector&lt;boost::asio::ip::tcp::socket&gt;   m_ptrlSocket;
		TCPSyncServer::m_tReceiver                        m_RecMsgVector; // For input

	public:
		TCPSyncServer(const unsigned int Port = 1337);

		void ListenForSynchronisations();

		void WriteToAllClients(const std::string &amp;Message);

		m_tReceiver GetMessageFromAllClients();

		bool IsConnected;
};

} // Namespace TCP

#endif TCPSYNCSERVER_HEADER
#include &quot;TCPSyncServer.h&quot;

namespace TCP
{

TCPSyncServer::TCPSyncServer(const unsigned int Port) :
	IsConnected(false),
	ClientCnt(0)
{
	m_pAcceptor.reset
	(
		new boost::asio::ip::tcp::acceptor
		(
			m_IOService, 
		    boost::asio::ip::tcp::endpoint(boost::asio::ip::tcp::v4(), Port)
		)
	);

	m_pSocket = new boost::asio::ip::tcp::socket(m_IOService);
} 

void TCPSyncServer::ListenForSynchronisations()
{
	IsConnected = false;

	m_pSocket = new boost::asio::ip::tcp::socket(m_IOService);

	m_pAcceptor-&gt;accept(*m_pSocket);

	if(m_pSocket-&gt;is_open())
	{
		IsConnected = true;
		++ClientCnt;

		m_ptrlSocket.push_back(m_pSocket);

		std::cout&lt;&lt;&quot;Synchronisated successfully with Client!&quot;&lt;&lt;std::endl;

		for(;;)
		{
			m_MsgRecBuffer = GetMessageFromAllClients();

			m_tReceiver::iterator it
			(
				m_MsgRecBuffer.begin()
			);

			for(; it != m_MsgRecBuffer.end(); ++it)
			{
				if(it-&gt;get&lt;0&gt;() &gt; 0)
				{
					std::cout&lt;&lt;&quot;Message from Client[&quot;&lt;&lt; it-&gt;get&lt;2&gt;() &lt;&lt;&quot;]: &quot;;

					std::vector&lt;char&gt;::size_type loop(0);

					for(; loop != it-&gt;get&lt;0&gt;(); ++loop)
					{
						if(loop == it-&gt;get&lt;0&gt;())
							std::cout&lt;&lt; it-&gt;get&lt;1&gt;()[loop] &lt;&lt;std::endl;
						else
							std::cout&lt;&lt; it-&gt;get&lt;1&gt;()[loop] &lt;&lt;std::endl;
					}
				}
				else if(it-&gt;get&lt;0&gt;() &lt; 0)
					std::cout&lt;&lt;&quot;[Error] Failed to handle message from client&quot;&lt;&lt;std::endl;
			}
		}
	}
}

/// Send the message to all clients
void TCPSyncServer::WriteToAllClients(const std::string &amp;Message)
{
	boost::ptr_vector&lt;boost::asio::ip::tcp::socket&gt;::iterator it
	(
		m_ptrlSocket.begin()
	);

	for(; it != m_ptrlSocket.end(); ++it)
	{
		boost::asio::write((*it),
						   boost::asio::buffer(Message),
						   boost::asio::transfer_all());
	}
}

m_tReceiver TCPSyncServer::GetMessageFromAllClients()
{
	std::vector&lt;char&gt; Message(1500); // 1,5KB Default size of segment
	boost::system::error_code ignored_error;

	boost::ptr_vector&lt;boost::asio::ip::tcp::socket&gt;::iterator it
	(
		m_ptrlSocket.begin()
	);

	for(; it != m_ptrlSocket.end(); ++it)
	{
		m_RecMsgVector.clear();

		const std::size_t length = it-&gt;read_some(boost::asio::buffer(Message),
												 ignored_error);

		m_RecMsgVector.push_back(boost::make_tuple(length, Message, ClientCnt));
	}

	if(ignored_error)
		throw boost::system::system_error(ignored_error);

	return m_RecMsgVector;
}

} // Namespace TCP
</code></pre>
<p>Vielleicht hilft mir ja nochmal mein Schnucki Dravere. Ansonsten danke an Alle im Voraus!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/261709/boost-asio-design-vs-asynchron</link><generator>RSS for Node</generator><lastBuildDate>Mon, 07 Sep 2026 03:38:38 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/261709.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 22 Feb 2010 18:43:08 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Boost::Asio - Design vs. Asynchron on Mon, 22 Feb 2010 18:43:08 GMT]]></title><description><![CDATA[<p>Hallo,<br />
und zwar habe ich einen Synchronen TCP-Server, auf den mehrere Clients connecten sollen. Nun bin ich jedoch an dem Punkt, an dem ich nicht weiß ob Asynchronität oder neues Design-Konzept besser wäre. Und zwar geht es um folgende Methode:</p>
<pre><code class="language-cpp">void TCPSyncServer::ListenForSynchronisations()
{
	IsConnected = false;

	m_pSocket = new boost::asio::ip::tcp::socket(m_IOService);

	m_pAcceptor-&gt;accept(*m_pSocket);

	if(m_pSocket-&gt;is_open())
	{
		IsConnected = true;
		++ClientCnt;

		m_ptrlSocket.push_back(m_pSocket);

		std::cout&lt;&lt;&quot;Synchronisated successfully with Client!&quot;&lt;&lt;std::endl;

		for(;;)
		{
			m_MsgRecBuffer = GetMessageFromAllClients();

			m_tReceiver::iterator it
			(
				m_MsgRecBuffer.begin()
			);

			for(; it != m_MsgRecBuffer.end(); ++it)
			{
				if(it-&gt;get&lt;0&gt;() &gt; 0)
				{
					std::cout&lt;&lt;&quot;Message from Client[&quot;&lt;&lt; it-&gt;get&lt;2&gt;() &lt;&lt;&quot;]: &quot;;

					std::vector&lt;char&gt;::size_type loop(0);

					for(; loop != it-&gt;get&lt;0&gt;(); ++loop)
					{
						if(loop == it-&gt;get&lt;0&gt;())
							std::cout&lt;&lt; it-&gt;get&lt;1&gt;()[loop] &lt;&lt;std::endl;
						else
							std::cout&lt;&lt; it-&gt;get&lt;1&gt;()[loop] &lt;&lt;std::endl;
					}
				}
				else if(it-&gt;get&lt;0&gt;() &lt; 0)
					std::cout&lt;&lt;&quot;[Error] Failed to handle message from client&quot;&lt;&lt;std::endl;
			}
		}
	}
}
</code></pre>
<p>Wie mache ich es nun, dass jederzeit ein Client connecten kann? Ich bin jetzt einfach mal so dreist und poste den kompletten Code, vielleicht hat ja noch einer Verbesserungsvorschläge, denn mir gefällt die Klasse langsam nicht mehr:</p>
<pre><code class="language-cpp">#ifndef TCPSYNCSERVER_HEADER
#define TCPSYNCSERVER_HEADER

#include &quot;StdIncludes.h&quot;

namespace TCP
{

typedef std::vector&lt;boost::tuple&lt;std::size_t, 
								 std::vector&lt;char&gt;, 
								 unsigned int&gt;&gt; m_tReceiver;

class TCPSyncServer
{
	private:
		unsigned int									  ClientCnt;
		boost::asio::io_service                           m_IOService;
		boost::scoped_ptr&lt;boost::asio::ip::tcp::acceptor&gt; m_pAcceptor;
		boost::asio::ip::tcp::socket					  *m_pSocket;
		TCPSyncServer::m_tReceiver						  m_MsgRecBuffer; // For output
		boost::ptr_vector&lt;boost::asio::ip::tcp::socket&gt;   m_ptrlSocket;
		TCPSyncServer::m_tReceiver                        m_RecMsgVector; // For input

	public:
		TCPSyncServer(const unsigned int Port = 1337);

		void ListenForSynchronisations();

		void WriteToAllClients(const std::string &amp;Message);

		m_tReceiver GetMessageFromAllClients();

		bool IsConnected;
};

} // Namespace TCP

#endif TCPSYNCSERVER_HEADER
#include &quot;TCPSyncServer.h&quot;

namespace TCP
{

TCPSyncServer::TCPSyncServer(const unsigned int Port) :
	IsConnected(false),
	ClientCnt(0)
{
	m_pAcceptor.reset
	(
		new boost::asio::ip::tcp::acceptor
		(
			m_IOService, 
		    boost::asio::ip::tcp::endpoint(boost::asio::ip::tcp::v4(), Port)
		)
	);

	m_pSocket = new boost::asio::ip::tcp::socket(m_IOService);
} 

void TCPSyncServer::ListenForSynchronisations()
{
	IsConnected = false;

	m_pSocket = new boost::asio::ip::tcp::socket(m_IOService);

	m_pAcceptor-&gt;accept(*m_pSocket);

	if(m_pSocket-&gt;is_open())
	{
		IsConnected = true;
		++ClientCnt;

		m_ptrlSocket.push_back(m_pSocket);

		std::cout&lt;&lt;&quot;Synchronisated successfully with Client!&quot;&lt;&lt;std::endl;

		for(;;)
		{
			m_MsgRecBuffer = GetMessageFromAllClients();

			m_tReceiver::iterator it
			(
				m_MsgRecBuffer.begin()
			);

			for(; it != m_MsgRecBuffer.end(); ++it)
			{
				if(it-&gt;get&lt;0&gt;() &gt; 0)
				{
					std::cout&lt;&lt;&quot;Message from Client[&quot;&lt;&lt; it-&gt;get&lt;2&gt;() &lt;&lt;&quot;]: &quot;;

					std::vector&lt;char&gt;::size_type loop(0);

					for(; loop != it-&gt;get&lt;0&gt;(); ++loop)
					{
						if(loop == it-&gt;get&lt;0&gt;())
							std::cout&lt;&lt; it-&gt;get&lt;1&gt;()[loop] &lt;&lt;std::endl;
						else
							std::cout&lt;&lt; it-&gt;get&lt;1&gt;()[loop] &lt;&lt;std::endl;
					}
				}
				else if(it-&gt;get&lt;0&gt;() &lt; 0)
					std::cout&lt;&lt;&quot;[Error] Failed to handle message from client&quot;&lt;&lt;std::endl;
			}
		}
	}
}

/// Send the message to all clients
void TCPSyncServer::WriteToAllClients(const std::string &amp;Message)
{
	boost::ptr_vector&lt;boost::asio::ip::tcp::socket&gt;::iterator it
	(
		m_ptrlSocket.begin()
	);

	for(; it != m_ptrlSocket.end(); ++it)
	{
		boost::asio::write((*it),
						   boost::asio::buffer(Message),
						   boost::asio::transfer_all());
	}
}

m_tReceiver TCPSyncServer::GetMessageFromAllClients()
{
	std::vector&lt;char&gt; Message(1500); // 1,5KB Default size of segment
	boost::system::error_code ignored_error;

	boost::ptr_vector&lt;boost::asio::ip::tcp::socket&gt;::iterator it
	(
		m_ptrlSocket.begin()
	);

	for(; it != m_ptrlSocket.end(); ++it)
	{
		m_RecMsgVector.clear();

		const std::size_t length = it-&gt;read_some(boost::asio::buffer(Message),
												 ignored_error);

		m_RecMsgVector.push_back(boost::make_tuple(length, Message, ClientCnt));
	}

	if(ignored_error)
		throw boost::system::system_error(ignored_error);

	return m_RecMsgVector;
}

} // Namespace TCP
</code></pre>
<p>Vielleicht hilft mir ja nochmal mein Schnucki Dravere. Ansonsten danke an Alle im Voraus!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1859713</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1859713</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Mon, 22 Feb 2010 18:43:08 GMT</pubDate></item><item><title><![CDATA[Reply to Boost::Asio - Design vs. Asynchron on Mon, 22 Feb 2010 20:35:58 GMT]]></title><description><![CDATA[<p>Update: Oder soll ich die Endlosschleife einfach in einen Extra-Thread ballern? <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=":/"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1859772</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1859772</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Mon, 22 Feb 2010 20:35:58 GMT</pubDate></item><item><title><![CDATA[Reply to Boost::Asio - Design vs. Asynchron on Mon, 22 Feb 2010 21:03:38 GMT]]></title><description><![CDATA[<p>Habe es jetzt so gemacht, funktioniert eigentlich Prima... <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="🙂"
    /><br />
Wenn mir jetzt noch einer zum kompletten Design ein paar Tips gibt, dann lecke ich den Bildschirm.</p>
<p>Danke im Vorrraus (HA! Ausgetricks0rt <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1859788</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1859788</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Mon, 22 Feb 2010 21:03:38 GMT</pubDate></item><item><title><![CDATA[Reply to Boost::Asio - Design vs. Asynchron on Mon, 22 Feb 2010 21:26:53 GMT]]></title><description><![CDATA[<p>Kannst du dich vielleicht auch mal vernünftig ausdrücken? Wenn man Dinge liest wie &quot;mein Schnucki Dravere&quot;, &quot;Endlosschleife in Extra-Thread ballern&quot; und &quot;dann lecke ich den Bildschirm&quot;, kann man dich echt nicht mehr ernst nehmen.</p>
<p>Das ist als netter Hinweis für zukünftige Posts gedacht, also nicht persönlich nehmen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1859804</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1859804</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Mon, 22 Feb 2010 21:26:53 GMT</pubDate></item><item><title><![CDATA[Reply to Boost::Asio - Design vs. Asynchron on Mon, 22 Feb 2010 21:32:33 GMT]]></title><description><![CDATA[<p>Mich sollte man sowieso nicht Ernst nehmen :p ... aber antworten könnt ihr trotzdem <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>EDIT:<br />
Oh... du fühlst dich vernachlässigt oder? Du darfst auch mein tlayner sein wenn du willst *Kopf treichel*</p>
<p>Nein ernsthaft, die Fragen waren ernst gemeint. Danke für Antworten!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1859810</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1859810</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Mon, 22 Feb 2010 21:32:33 GMT</pubDate></item><item><title><![CDATA[Reply to Boost::Asio - Design vs. Asynchron on Mon, 22 Feb 2010 21:37:57 GMT]]></title><description><![CDATA[<p>Sind schon Ferien?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1859813</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1859813</guid><dc:creator><![CDATA[OhNein!]]></dc:creator><pubDate>Mon, 22 Feb 2010 21:37:57 GMT</pubDate></item><item><title><![CDATA[Reply to Boost::Asio - Design vs. Asynchron on Mon, 22 Feb 2010 21:46:04 GMT]]></title><description><![CDATA[<p>Kellerkinder wie wir haben immer Zeit! *g*<br />
Ach ja, Koja ist ja keins... <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1859821</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1859821</guid><dc:creator><![CDATA[Ad aCTa]]></dc:creator><pubDate>Mon, 22 Feb 2010 21:46:04 GMT</pubDate></item><item><title><![CDATA[Reply to Boost::Asio - Design vs. Asynchron on Tue, 23 Feb 2010 07:04:26 GMT]]></title><description><![CDATA[<p>Es wäre schon net, wenn Du etwas weniger Kot von Dir geben würdest. <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="😉"
    /></p>
<p>Zum Thema:<br />
Wenn Du mit einer Endlosschleife in einem extra Thread arbeitest, dann ist das quasi eine schlechte Nachbildung der asynchronen Mechanismen von asio.</p>
<p>Besser ist es, gleich alles asynchron zu machen.</p>
<p>Die asynchronen Funktionen haben vor allem den großen Vorteil, dass man sie jederzeit sicher abbrechen kann. Bei den synchronen Funktionen ist das meist gar nicht oder nur mit sehr viel Aufwand möglich.</p>
<p>Wie man einen asynchronen Server aufbaut, der auch mehrere Clients gleichzeitig verkraften kann, wird z.B. in den HTTP-Server-Beispielen gezeigt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1859876</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1859876</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Tue, 23 Feb 2010 07:04:26 GMT</pubDate></item><item><title><![CDATA[Reply to Boost::Asio - Design vs. Asynchron on Tue, 23 Feb 2010 08:16:45 GMT]]></title><description><![CDATA[<p>Tachyon schrieb:</p>
<blockquote>
<p>Es wäre schon net, wenn Du etwas weniger Kot von Dir geben würdest. <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="😉"
    /></p>
</blockquote>
<p>Hättet ihr wohl gerne^^</p>
<p>Tachyon schrieb:</p>
<blockquote>
<p>Wenn Du mit einer Endlosschleife in einem extra Thread arbeitest, dann ist das quasi eine schlechte Nachbildung der asynchronen Mechanismen von asio.</p>
</blockquote>
<p>Hm okay, dachte ich mir schon.</p>
<p>Tachyon schrieb:</p>
<blockquote>
<p>Die asynchronen Funktionen haben vor allem den großen Vorteil, dass man sie jederzeit sicher abbrechen kann.</p>
</blockquote>
<p>Inwiefern abbrechen?</p>
<p>Tachyon schrieb:</p>
<blockquote>
<p>Wie man einen asynchronen Server aufbaut, der auch mehrere Clients gleichzeitig verkraften kann, wird z.B. in den HTTP-Server-Beispielen gezeigt.</p>
</blockquote>
<p>Öhmöhmöhm... warum denn HTTP? Über TCP können doch auch mehrere connecten <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>
<p>Danke soweit erstmal meine kleinen Puffelhäschen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1859900</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1859900</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Tue, 23 Feb 2010 08:16:45 GMT</pubDate></item><item><title><![CDATA[Reply to Boost::Asio - Design vs. Asynchron on Tue, 23 Feb 2010 08:23:10 GMT]]></title><description><![CDATA[<p>Kóyaánasqatsi schrieb:</p>
<blockquote>
<p>Tachyon schrieb:</p>
<blockquote>
<p>Wie man einen asynchronen Server aufbaut, der auch mehrere Clients gleichzeitig verkraften kann, wird z.B. in den HTTP-Server-Beispielen gezeigt.</p>
</blockquote>
<p>Öhmöhmöhm... warum denn HTTP? Über TCP können doch auch mehrere connecten <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>
</blockquote>
<p>Lies dir nochmal GENAU durch was er geschrieben hat!<br />
Da steht nicht du sollst jetzt was mit HTTP machen, sondern in die HTTP-Server-examples (wahrscheinlich von boost::asio) schauen, da steht drinnen wie man mit mehreren Clients umgehen kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1859902</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1859902</guid><dc:creator><![CDATA[l&#x27;abra d&#x27;or]]></dc:creator><pubDate>Tue, 23 Feb 2010 08:23:10 GMT</pubDate></item><item><title><![CDATA[Reply to Boost::Asio - Design vs. Asynchron on Tue, 23 Feb 2010 08:44:57 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/20193">@Kóyaánasqatsi</a>: Reiß dich mal zusammen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1859909</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1859909</guid><dc:creator><![CDATA[evilissimo]]></dc:creator><pubDate>Tue, 23 Feb 2010 08:44:57 GMT</pubDate></item><item><title><![CDATA[Reply to Boost::Asio - Design vs. Asynchron on Tue, 23 Feb 2010 09:06:08 GMT]]></title><description><![CDATA[<p>Kóyaánasqatsi schrieb:</p>
<blockquote>
<p>Öhmöhmöhm... warum denn HTTP? Über TCP können doch auch mehrere connecten <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>
</blockquote>
<p>Weil das eine in der Anwendungsschicht liegt, und das andere in der Transportschicht. Deshalb ist das auch kein Widerspruch zueinander.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1859915</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1859915</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Tue, 23 Feb 2010 09:06:08 GMT</pubDate></item></channel></rss>