<?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[Kommunikationsprotokoll]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe inzwischen schon recht gute Erfahrungen mit Winsock gemacht und würde mich gerne ein wenig weiterentwickeln. Dazu wollte ich ein kleines Protokoll erstellen.</p>
<p>Folgendes habe ich dazu ausprobiert und es scheint auch korrekt zu klappen:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;sstream&gt;
#include &lt;string&gt;

class Data
{
private:
	unsigned int dataLen;
	unsigned int dataCode;
	std::string data;

public:
	Data( unsigned int dataCode, 
		  const std::string&amp; data )
	{
		this-&gt;dataCode = dataCode;
		this-&gt;data = data;

		this-&gt;dataLen = this-&gt;data.length();
	}

	const std::string str()
	{
		std::stringstream result;

		result	&lt;&lt; &quot;\x15\x11&quot;
				&lt;&lt; dataLen	&lt;&lt; &quot;\x10&quot;
				&lt;&lt; dataCode &lt;&lt; &quot;\x10&quot;
				&lt;&lt; data
				&lt;&lt; &quot;\x90&quot;;

		return result.str();
	}
};

void parse(const std::string&amp; input);

int main()
{
	for (;;)
	{
		std::string temp;
		std::cout &lt;&lt; &quot;\nData: &quot;;
		std::getline(std::cin, temp);
		Data test(100, temp);

		std::cout &lt;&lt; test.str() &lt;&lt; std::endl;
		parse(test.str());
	}
	return 0;
}

void parse(const std::string&amp; input)
{
	unsigned int pos = 2;
	unsigned int len = 0;

	if (input[0] == '\x15' &amp;&amp; input[1] == '\x11')
	{
		std::cout &lt;&lt; &quot;Found protocol.&quot; &lt;&lt; std::endl;

		for (unsigned int i = 1; i &lt;= 3; ++i)
		{
			std::cout &lt;&lt; &quot;[&quot; &lt;&lt; i &lt;&lt; &quot;]\t&quot;;

			if (i != 3)
			{
				std::string strLen;
				while (input[pos] != '\x10')
				{
					if (i == 1)
					{
						strLen += input[pos];
					}
					putchar(input[pos]);
					++pos;
				}

				if (i == 1)
				{
					len = atoi(strLen.c_str());
				}
			}
			else
			{
				for (int i = 0; i &lt; len; ++i)
				{
					putchar(input[pos]);
					++pos;
				}
			}

			putchar('\n');

			if (input[pos] == '\x10')
			{
				pos++;
			}
		}

		if (input[pos] == '\x90')
		{
			std::cout &lt;&lt; &quot;Protocol end.&quot; &lt;&lt; std::endl;
		}
	}
}
</code></pre>
<p>Jetzt meine Frage: Ist das die richtige Vorgehensweise? Wie sieht es mit Portabilität aus? Und wie setze ich das nun konkret bei einer Server-Client-Verbindung ein?</p>
<p>Ich hoffe ihr könnt mir weiterhelfen <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>Vielen Dank im Voraus,<br />
Porty</p>
<p>PS: Ich würde mich auch sehr über Verbesserungsvorschläge im Bezug auf meinen Programmierstil, etc. freuen <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/topic/214631/kommunikationsprotokoll</link><generator>RSS for Node</generator><lastBuildDate>Fri, 17 Apr 2026 16:44:02 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/214631.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 01 Jun 2008 10:14:43 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Kommunikationsprotokoll on Sun, 01 Jun 2008 10:14:43 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe inzwischen schon recht gute Erfahrungen mit Winsock gemacht und würde mich gerne ein wenig weiterentwickeln. Dazu wollte ich ein kleines Protokoll erstellen.</p>
<p>Folgendes habe ich dazu ausprobiert und es scheint auch korrekt zu klappen:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;sstream&gt;
#include &lt;string&gt;

class Data
{
private:
	unsigned int dataLen;
	unsigned int dataCode;
	std::string data;

public:
	Data( unsigned int dataCode, 
		  const std::string&amp; data )
	{
		this-&gt;dataCode = dataCode;
		this-&gt;data = data;

		this-&gt;dataLen = this-&gt;data.length();
	}

	const std::string str()
	{
		std::stringstream result;

		result	&lt;&lt; &quot;\x15\x11&quot;
				&lt;&lt; dataLen	&lt;&lt; &quot;\x10&quot;
				&lt;&lt; dataCode &lt;&lt; &quot;\x10&quot;
				&lt;&lt; data
				&lt;&lt; &quot;\x90&quot;;

		return result.str();
	}
};

void parse(const std::string&amp; input);

int main()
{
	for (;;)
	{
		std::string temp;
		std::cout &lt;&lt; &quot;\nData: &quot;;
		std::getline(std::cin, temp);
		Data test(100, temp);

		std::cout &lt;&lt; test.str() &lt;&lt; std::endl;
		parse(test.str());
	}
	return 0;
}

void parse(const std::string&amp; input)
{
	unsigned int pos = 2;
	unsigned int len = 0;

	if (input[0] == '\x15' &amp;&amp; input[1] == '\x11')
	{
		std::cout &lt;&lt; &quot;Found protocol.&quot; &lt;&lt; std::endl;

		for (unsigned int i = 1; i &lt;= 3; ++i)
		{
			std::cout &lt;&lt; &quot;[&quot; &lt;&lt; i &lt;&lt; &quot;]\t&quot;;

			if (i != 3)
			{
				std::string strLen;
				while (input[pos] != '\x10')
				{
					if (i == 1)
					{
						strLen += input[pos];
					}
					putchar(input[pos]);
					++pos;
				}

				if (i == 1)
				{
					len = atoi(strLen.c_str());
				}
			}
			else
			{
				for (int i = 0; i &lt; len; ++i)
				{
					putchar(input[pos]);
					++pos;
				}
			}

			putchar('\n');

			if (input[pos] == '\x10')
			{
				pos++;
			}
		}

		if (input[pos] == '\x90')
		{
			std::cout &lt;&lt; &quot;Protocol end.&quot; &lt;&lt; std::endl;
		}
	}
}
</code></pre>
<p>Jetzt meine Frage: Ist das die richtige Vorgehensweise? Wie sieht es mit Portabilität aus? Und wie setze ich das nun konkret bei einer Server-Client-Verbindung ein?</p>
<p>Ich hoffe ihr könnt mir weiterhelfen <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>Vielen Dank im Voraus,<br />
Porty</p>
<p>PS: Ich würde mich auch sehr über Verbesserungsvorschläge im Bezug auf meinen Programmierstil, etc. freuen <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/1520475</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1520475</guid><dc:creator><![CDATA[Porty]]></dc:creator><pubDate>Sun, 01 Jun 2008 10:14:43 GMT</pubDate></item><item><title><![CDATA[Reply to Kommunikationsprotokoll on Sun, 01 Jun 2008 10:22:24 GMT]]></title><description><![CDATA[<p>Porty schrieb:</p>
<blockquote>
<p>Jetzt meine Frage: Ist das die richtige Vorgehensweise?</p>
</blockquote>
<p>nein, man schreibt erst eine spezifikation. muss ja nicht gleich so fett wie ein RFC werden, aber jeder muss verstehen können, wie das protokol funzt.</p>
<p>Porty schrieb:</p>
<blockquote>
<p>Wie sieht es mit Portabilität aus?</p>
</blockquote>
<p>schlecht. mach sowas besser in reinem ansi-C, dann ist der code maximal portabel.</p>
<p><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/1520479</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1520479</guid><dc:creator><![CDATA[fricky]]></dc:creator><pubDate>Sun, 01 Jun 2008 10:22:24 GMT</pubDate></item><item><title><![CDATA[Reply to Kommunikationsprotokoll on Sun, 01 Jun 2008 14:28:36 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">result    &lt;&lt; &quot;\x15\x11&quot;
          &lt;&lt; dataLen    &lt;&lt; &quot;\x10&quot;
          &lt;&lt; dataCode &lt;&lt; &quot;\x10&quot;
          &lt;&lt; data
          &lt;&lt; &quot;\x90&quot;;
</code></pre>
<p>&quot;Spezifikation&quot;:<br />
Die Nachricht beginnt mit den Zeichen: \x15\x11</p>
<p>Anschließend kommt eine Zahl, welche die Länge der Daten angibt. Das Ende wird durch ein \x10 terminiert.</p>
<p>Anschließend folgt ein Statuscode. Das Ende wird duch ein \x10 terminiert.</p>
<p>Schlussendlich kommt die eigentliche Textnachricht. Die Anzahl der Zeichen sollte dataCode entsprechen.</p>
<p>Das Ende der Nachricht wird durch \x90 gekennzeichnet.<br />
Ende.</p>
<p>Ich brauche noch Tipps zum eigentlichen Protokoll und der Umsetzung des Protokolls <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>Hat da jemand Erfahrungen? <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="🙂"
    /> <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="🙂"
    /> <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>Viele Grüße,<br />
Porty</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1520584</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1520584</guid><dc:creator><![CDATA[Porty]]></dc:creator><pubDate>Sun, 01 Jun 2008 14:28:36 GMT</pubDate></item><item><title><![CDATA[Reply to Kommunikationsprotokoll on Fri, 20 Jun 2008 15:13:40 GMT]]></title><description><![CDATA[<p>*push*</p>
<p>Ist mir sehr wichtig!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1532907</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1532907</guid><dc:creator><![CDATA[Porty]]></dc:creator><pubDate>Fri, 20 Jun 2008 15:13:40 GMT</pubDate></item><item><title><![CDATA[Reply to Kommunikationsprotokoll on Sat, 21 Jun 2008 07:21:19 GMT]]></title><description><![CDATA[<p>Ich würde noch eine Protokollversion und evtl. noch eine Inhaltskennzeichnung mit aufnehmen. Mit dieser Kennzeichnung kannst du dann falls zukünftig nötig, auch andere Daten als Text übertragen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1533135</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1533135</guid><dc:creator><![CDATA[musicman]]></dc:creator><pubDate>Sat, 21 Jun 2008 07:21:19 GMT</pubDate></item><item><title><![CDATA[Reply to Kommunikationsprotokoll on Tue, 24 Jun 2008 07:18:03 GMT]]></title><description><![CDATA[<p>Diese Endterminierungen erscheinen mir irgendwie redundant, das Zeichen kann man sich auch sparen.<br />
Die Länge der Daten haste ja in deinem dataLen attribut.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1534550</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1534550</guid><dc:creator><![CDATA[k1ro]]></dc:creator><pubDate>Tue, 24 Jun 2008 07:18:03 GMT</pubDate></item></channel></rss>