<?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[Winsock - Game-Server Emulator]]></title><description><![CDATA[<p>Hi, ich könnte Hilfe bei dem oben angegebenen Thema gebrauchen <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>
<ol>
<li>Was genau sind Pakete?<br />
Ich habe einen Multi-Client Server programmiert, der mit</li>
</ol>
<pre><code class="language-cpp">char buf[512];
recv(client[i], buf, sizeof(buf), 0);
</code></pre>
<p>Strings empfängt, und mit</p>
<pre><code class="language-cpp">send(client[i], &quot;hallo&quot;, (int)strlen(&quot;hallo&quot;), 0);
</code></pre>
<p>etwas zurück schickt.<br />
Sind das auch Pakete, oder nur Strings? Oder muss das für ein Paket in Hexadezimal stehen?</p>
<ol start="2">
<li>Bei dem Emulator möchte ich auf Anfragen von einem Client, nehmen wir zum Beispiel &quot;Ragnarok&quot;, antworten.<br />
Also wenn man mit der ragexe.exe versucht zu meinem Server zu connecten, möchte ich diese Pakete empfangen, analysieren und darauf antworten.<br />
Das analysieren hab ich mir so vorgestellt:</li>
</ol>
<pre><code class="language-cpp">recv(paket);
switch(paket) {
case 0x6400:
...
case 0x708:
...
</code></pre>
<ol start="3">
<li>
<p>Ich würde außerdem gerne wissen, wie ich eigentlich die Pakete scanne...<br />
Ich benutze den Paket Sniffer &quot;Ethereal&quot;.<br />
Nur wenn ich da etwas aufnehme, weiß ich gar nicht, was ich jetzt zum identifizieren (s. switch() -&gt; case 0x708:) der Pakete brauche..</p>
</li>
<li>
<p>Wie kann ich Farben in printf benutzen, wie zum Beispiel:</p>
</li>
</ol>
<pre><code>#define CL_WHITE	&quot;\033[1;37m&quot;
</code></pre>
<p>Bei mir kommt da nichts, deswegen habe ich es momentan mit SetConsoleTextAttribute gemacht..</p>
<p>Ich wäre sehr, sehr dankbar, wenn mir jemand helfen könnte, da ich mich gerne mal mit solchen Server Emulatoren beschäftigen würde <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="😃"
    /><br />
Danke!</p>
<p>@Move:<br />
Als ich diesen Thread unter WinAPI stellen wollte, wurde mir der Fehler &quot;Dieses Forum existiert nicht&quot; oder so ähnlcih ausgeworfen..</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/184286/winsock-game-server-emulator</link><generator>RSS for Node</generator><lastBuildDate>Sun, 05 Jul 2026 14:54:26 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/184286.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 13 Jun 2007 21:22:00 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Winsock - Game-Server Emulator on Wed, 13 Jun 2007 21:22:00 GMT]]></title><description><![CDATA[<p>Hi, ich könnte Hilfe bei dem oben angegebenen Thema gebrauchen <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>
<ol>
<li>Was genau sind Pakete?<br />
Ich habe einen Multi-Client Server programmiert, der mit</li>
</ol>
<pre><code class="language-cpp">char buf[512];
recv(client[i], buf, sizeof(buf), 0);
</code></pre>
<p>Strings empfängt, und mit</p>
<pre><code class="language-cpp">send(client[i], &quot;hallo&quot;, (int)strlen(&quot;hallo&quot;), 0);
</code></pre>
<p>etwas zurück schickt.<br />
Sind das auch Pakete, oder nur Strings? Oder muss das für ein Paket in Hexadezimal stehen?</p>
<ol start="2">
<li>Bei dem Emulator möchte ich auf Anfragen von einem Client, nehmen wir zum Beispiel &quot;Ragnarok&quot;, antworten.<br />
Also wenn man mit der ragexe.exe versucht zu meinem Server zu connecten, möchte ich diese Pakete empfangen, analysieren und darauf antworten.<br />
Das analysieren hab ich mir so vorgestellt:</li>
</ol>
<pre><code class="language-cpp">recv(paket);
switch(paket) {
case 0x6400:
...
case 0x708:
...
</code></pre>
<ol start="3">
<li>
<p>Ich würde außerdem gerne wissen, wie ich eigentlich die Pakete scanne...<br />
Ich benutze den Paket Sniffer &quot;Ethereal&quot;.<br />
Nur wenn ich da etwas aufnehme, weiß ich gar nicht, was ich jetzt zum identifizieren (s. switch() -&gt; case 0x708:) der Pakete brauche..</p>
</li>
<li>
<p>Wie kann ich Farben in printf benutzen, wie zum Beispiel:</p>
</li>
</ol>
<pre><code>#define CL_WHITE	&quot;\033[1;37m&quot;
</code></pre>
<p>Bei mir kommt da nichts, deswegen habe ich es momentan mit SetConsoleTextAttribute gemacht..</p>
<p>Ich wäre sehr, sehr dankbar, wenn mir jemand helfen könnte, da ich mich gerne mal mit solchen Server Emulatoren beschäftigen würde <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="😃"
    /><br />
Danke!</p>
<p>@Move:<br />
Als ich diesen Thread unter WinAPI stellen wollte, wurde mir der Fehler &quot;Dieses Forum existiert nicht&quot; oder so ähnlcih ausgeworfen..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1305234</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1305234</guid><dc:creator><![CDATA[ws2_32]]></dc:creator><pubDate>Wed, 13 Jun 2007 21:22:00 GMT</pubDate></item><item><title><![CDATA[Reply to Winsock - Game-Server Emulator on Wed, 13 Jun 2007 22:06:02 GMT]]></title><description><![CDATA[<p>ws2_32 schrieb:</p>
<blockquote>
<p>...</p>
<p>Ich benutze den Paket Sniffer &quot;Ethereal&quot;.<br />
...</p>
</blockquote>
<p>Guten Tag, ihren Ausweis bitte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1305255</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1305255</guid><dc:creator><![CDATA[* INTERNETPOLIZEI *]]></dc:creator><pubDate>Wed, 13 Jun 2007 22:06:02 GMT</pubDate></item><item><title><![CDATA[Reply to Winsock - Game-Server Emulator on Wed, 13 Jun 2007 22:39:01 GMT]]></title><description><![CDATA[<p>hahaha...</p>
<p>im schlimmsten Fall würde es laut den neuen &quot;Hackerparagraphen&quot; auch für<br />
privat Personen so laufen.</p>
<p>Das ist doch nicht mehr ganz frisch...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1305269</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1305269</guid><dc:creator><![CDATA[curry-king]]></dc:creator><pubDate>Wed, 13 Jun 2007 22:39:01 GMT</pubDate></item><item><title><![CDATA[Reply to Winsock - Game-Server Emulator on Thu, 14 Jun 2007 19:47:43 GMT]]></title><description><![CDATA[<p>Es ist ja nett, dass ihr mir geantwortet habt, nur leider helfen mir diese kindischen Antworten in keinster Weise.</p>
<p>Ich hoffe, dass jemand mir mit konstruktiven Beiträgen helfen kann.</p>
<p>Falls ja, vielen Dank. <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/1306022</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1306022</guid><dc:creator><![CDATA[ws2_32]]></dc:creator><pubDate>Thu, 14 Jun 2007 19:47:43 GMT</pubDate></item><item><title><![CDATA[Reply to Winsock - Game-Server Emulator on Thu, 14 Jun 2007 20:14:59 GMT]]></title><description><![CDATA[<p>ws2_32 schrieb:</p>
<blockquote>
<ol>
<li>Was genau sind Pakete?</li>
</ol>
</blockquote>
<p>Bei der Post:<br />
Eine fest verpackte Postsendung der Deutschen Post oder anderen Anbietern mit einem bestimmten Mindest- bzw. Höchstgewicht. <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>Bei TCP/IP:</p>
<p>Daten die durchs Netzwerk geschickt werden.<br />
Möglichwerweise in Pakete aufgeteilte Dateien, wenn sie nicht in ein Paket passen.</p>
<p>ws2_32 schrieb:</p>
<blockquote>
<p>Sind das auch Pakete, oder nur Strings?</p>
</blockquote>
<p>Pakete mit Strings. <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>ws2_32 schrieb:</p>
<blockquote>
<p>Oder muss das für ein Paket in Hexadezimal stehen?</p>
</blockquote>
<p>Nö.</p>
<p>ws2_32 schrieb:</p>
<blockquote>
<ol start="3">
<li>Ich würde außerdem gerne wissen, wie ich eigentlich die Pakete scanne...<br />
Ich benutze den Paket Sniffer &quot;Ethereal&quot;.<br />
Nur wenn ich da etwas aufnehme, weiß ich gar nicht, was ich jetzt zum identifizieren (s. switch() -&gt; case 0x708:) der Pakete brauche..</li>
</ol>
</blockquote>
<p>Wozu scannen <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="😕"
    /> Du hast doch einen Multi-Client-Server geschrieben(?),<br />
die Pakete kommen i.A. über Sockets an, mit denen sich die Clients<br />
zu deinem Server verbinden.<br />
Du guckst also in den Puffer buf deiner recv Funktion rein und reagierst entsprechend in deinem Programm.<br />
Musst also eigene Regeln aufstellen, was soll passieren, wenn dies und das drinsteht ( Anmeldung des Spielers, Name, Welches Spiel Starten, Socket-Nr. usw. ).</p>
<p>ws2_32 schrieb:</p>
<blockquote>
<ol start="4">
<li>Wie kann ich Farben in printf benutzen, wie zum Beispiel:</li>
</ol>
<pre><code>#define CL_WHITE	&quot;\033[1;37m&quot;
</code></pre>
<p>Bei mir kommt da nichts, deswegen habe ich es momentan mit SetConsoleTextAttribute gemacht..</p>
</blockquote>
<p>z.B.<br />
system (&quot;color 3c&quot;);</p>
<p>MfG,<br />
TCP/IP</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1306048</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1306048</guid><dc:creator><![CDATA[TCP&#x2F;IP]]></dc:creator><pubDate>Thu, 14 Jun 2007 20:14:59 GMT</pubDate></item><item><title><![CDATA[Reply to Winsock - Game-Server Emulator on Thu, 14 Jun 2007 21:09:18 GMT]]></title><description><![CDATA[<p>Dieser Thread wurde von Moderator/in <a href="http://www.c-plusplus.net/forum/profile-var-mode-is-viewprofile-and-u-is-14811.html" rel="nofollow">Tim</a> aus dem Forum <a href="http://www.c-plusplus.net/forum/viewforum-var-f-is-10.html" rel="nofollow">ANSI C</a> in das Forum <a href="http://www.c-plusplus.net/forum/viewforum-var-f-is-4.html" rel="nofollow">WinAPI</a> verschoben.</p>
<p>Im Zweifelsfall bitte auch folgende Hinweise beachten:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-39405.html" rel="nofollow">C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?</a></p>
<p><em>Dieses Posting wurde automatisch erzeugt.</em></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1306090</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1306090</guid><dc:creator><![CDATA[C++ Forumbot]]></dc:creator><pubDate>Thu, 14 Jun 2007 21:09:18 GMT</pubDate></item><item><title><![CDATA[Reply to Winsock - Game-Server Emulator on Fri, 15 Jun 2007 16:20:53 GMT]]></title><description><![CDATA[<p>Ok, erst einmal danke.</p>
<p>Nur die Frage, die ich noch habe, ist:</p>
<p>Wie genau empfange ich das?</p>
<p>Bei anderen Sourcen, die einen Server emulierten, gab es so etwas in der Art:</p>
<pre><code class="language-cpp">switch(buf) {
case 0x708:
    break;
}
</code></pre>
<p>wie bekomme ich nun diesen Hex-Wert heraus, das 0x708?</p>
<p>Ich habe bisher so etwas:</p>
<pre><code class="language-cpp">char buf[512];
rc = recv(client[i], buf, sizeof(buf), 0);
buf[rc] = '\0';
printf(&quot;\Client #%d: %s\n&quot;, i, buf);
</code></pre>
<p>wenn ich mit dem Spiele-Client connecte, dann wird solch ein seltsames Pik ausgegeben..</p>
<p>Wie kann ich die Hex-Werte ausgeben, damit ich die die Anfragen der Clienten auch bestimmten Funktionen zuteilen kann?</p>
<p>&lsqb;&lsqb;[noch eine kleine Frage am Rande: wofür sind unsigned chars?&rsqb;&rsqb;]</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1306726</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1306726</guid><dc:creator><![CDATA[ws2_32]]></dc:creator><pubDate>Fri, 15 Jun 2007 16:20:53 GMT</pubDate></item><item><title><![CDATA[Reply to Winsock - Game-Server Emulator on Sat, 16 Jun 2007 16:16:02 GMT]]></title><description><![CDATA[<p>Die Zahl 0x708 ist Hexadezimal und im Dezimalen ist es die 1800.<br />
Für eine binäre Darstellung bräuchtest du 11 Bit.<br />
char hat jedoch nur 1 Byte = 8 Bit.<br />
Folge:<br />
Die Zahl 0x708 muss auf zwei Byte verteilt werden.</p>
<p>Die Anweisung switch(buf) ist syntaktisch falsch.<br />
Wenn, dann müsste es switch(buf[i]) heissen.<br />
Aus den oben genannten Gründen ist aber ein Vergleich auf buf[i] == 0x708<br />
unsinnig.</p>
<p>Das seltsame Pik dürfte das Steuerzeichen ACK sein. ( char c = 6 )<br />
Was steht drin bei rc ?<br />
Probier mal:<br />
printf(&quot;\Client #%d: %s\n&quot;, <strong>rc</strong>, buf);</p>
<p>Ansonsten musst du das Protokoll der Übertragung kennen, um zu wissen, wie du sinnvoll in deinem buf nach Daten suchen kannst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1307333</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1307333</guid><dc:creator><![CDATA[TCP&#x2F;IP]]></dc:creator><pubDate>Sat, 16 Jun 2007 16:16:02 GMT</pubDate></item><item><title><![CDATA[Reply to Winsock - Game-Server Emulator on Sat, 16 Jun 2007 17:37:27 GMT]]></title><description><![CDATA[<p>Kann ich denn char buf[512]; benutzen, um diese Pakete von dem Spiel zu empfangen?</p>
<p>Oder muss ich int, long oder DWORD etc. benutzen?</p>
<p>rc beträgt beim empfang 6, so groß ist das Paket oder?</p>
<p>nur wo steckt jetzt die oftmals genannte Zahl 0x708 drinnen?...</p>
<p>Momentan habe ich über all dies überhaupt keinen Überblick <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="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1307369</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1307369</guid><dc:creator><![CDATA[ws2_32]]></dc:creator><pubDate>Sat, 16 Jun 2007 17:37:27 GMT</pubDate></item><item><title><![CDATA[Reply to Winsock - Game-Server Emulator on Sat, 16 Jun 2007 17:44:06 GMT]]></title><description><![CDATA[<p>Bei diesem Code:</p>
<pre><code class="language-cpp">char buf[1024];
rc = recv(client[i], buf, sizeof(buf), 0);
buf[rc] = '\0';
printf(&quot;\n%d\n&quot;, rc);
printf(&quot;\n%s\n&quot;, buf);
printf(&quot;\n%d\n&quot;, buf[0]);
printf(&quot;\n%d\n&quot;, buf[1]);
printf(&quot;\n%d\n&quot;, buf[2]);
printf(&quot;\n%d\n&quot;, buf[3]);
printf(&quot;\n%d\n&quot;, buf[4]);
printf(&quot;\n%d\n&quot;, buf[5]);
</code></pre>
<p>war das der Output:</p>
<pre><code>6

♠

6

0

98

102

4

38
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1307374</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1307374</guid><dc:creator><![CDATA[ws2_32]]></dc:creator><pubDate>Sat, 16 Jun 2007 17:44:06 GMT</pubDate></item><item><title><![CDATA[Reply to Winsock - Game-Server Emulator on Sat, 16 Jun 2007 19:18:36 GMT]]></title><description><![CDATA[<p>ws2_32 schrieb:</p>
<blockquote>
<p>Kann ich denn char buf[512]; benutzen, um diese Pakete von dem Spiel zu empfangen?</p>
</blockquote>
<p>Ja, klar.</p>
<p>ws2_32 schrieb:</p>
<blockquote>
<p>nur wo steckt jetzt die oftmals genannte Zahl 0x708 drinnen?...<br />
Momentan habe ich über all dies überhaupt keinen Überblick <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="😞"
    /></p>
</blockquote>
<p>Einzelne Zeichen kannst du dir mit dem %c Operator anzeigen lassen:</p>
<pre><code class="language-cpp">#include &lt;stdio.h&gt;

int main()
{
	/*
	Mach dich doch mal schlau über ASCII Character Codes.
	Jedes Zeichen entspricht einer Nummer.
	Das Zeichen 'A' entsrpicht z.B. der Nummer 65
	*/
	char c = 'A';
	printf(&quot;Nummer: %d Zeichen: %c\n&quot;, c, c );
	// Das ganze Funktioniert in beide Richtungen:
	c = 65;
	printf(&quot;Nummer: %d Zeichen: %c\n&quot;, c, c );
    return 0;
}
</code></pre>
<p>Wo die Zahl 0x708 drin steckt ist schwer zu sagen, weil ich nicht weiss wie sie kodiert ist.</p>
<p>Eine Möglichkeit der Kodierung, bzw. Übertragung wäre:<br />
char _16Bit[4] = &quot;0708&quot;; // 2 Byte<br />
Das müsste man dann noch bei Bedarf in einen dezimalen Wert umrechnen.</p>
<p>Mit switch( buf[i] ) kannst du immer nur ein Byte abfragen.</p>
<p>Entweder sind in deinem Puffer lauter Zahlen, dann sind halt je zwei Byte eine Zahl.<br />
Sind noch andere Daten im Puffer, so müssen die Zahlen mit einem einleitenden Zeichen markiert sein, sonst findest du die nicht wieder.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1307413</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1307413</guid><dc:creator><![CDATA[TCP&#x2F;IP]]></dc:creator><pubDate>Sat, 16 Jun 2007 19:18:36 GMT</pubDate></item><item><title><![CDATA[Reply to Winsock - Game-Server Emulator on Sat, 16 Jun 2007 19:57:21 GMT]]></title><description><![CDATA[<p>Ich lade mir jetzt ein weiteres Spiel herunter und werde da mal gucken, was mir der Client schickt..</p>
<p>buf[0] und buf[1] sind dann die Header, oder?</p>
<p>bei dem nächsten Spiel kenne ich den Header nämlich, und dann vergleiche ich den halt mal mit den bekannten..</p>
<p>Momentan habe ich große Hoffnungen, dass ich es jetzt endlich geschafft habe...</p>
<p>Ich gebe dann Bescheid.</p>
<p>Vielen Dank für die bisherigen Bemühungen, ich hoffe, dass mir weitere Fragen, falls gleich welche enstehen, auch beantwortet werden <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/1307423</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1307423</guid><dc:creator><![CDATA[ws2_32]]></dc:creator><pubDate>Sat, 16 Jun 2007 19:57:21 GMT</pubDate></item><item><title><![CDATA[Reply to Winsock - Game-Server Emulator on Sat, 16 Jun 2007 23:02:25 GMT]]></title><description><![CDATA[<p>Keine Ahnung was du für Header meinst.<br />
Bei einer HTTP Übertragung z.B. wird ein Header mit &quot;\r\n\r\n&quot; Beendet.</p>
<p>Bedenke das in buf[0] und buf[1] jeweils nur ein Zeichen der Größe 1 Byte steckt.<br />
Da es sich dabei um die ersten zwei Zeichen deines Puffer handelt, wird es sehr unwahrscheinlich sein, das es der Header ist.</p>
<p>So wie ich es verstehe, möchtest du Gameserver abfragen.<br />
Das ist keine ganz so einfache Sache, denn verschiedene Spiele können verschiedene Protokolle für die Übertragung benutzen.</p>
<p>Du findest im Internet Informationen über diese Protokolle.<br />
Es gibt auch Codeschnipsel und fertige Software(Gameserver-Scanner):<br />
<a href="http://www.codeproject.com/managedcpp/gfxscan.asp" rel="nofollow">http://www.codeproject.com/managedcpp/gfxscan.asp</a><br />
<a href="http://www.codeproject.com/csharp/GameServerInfo.asp" rel="nofollow">http://www.codeproject.com/csharp/GameServerInfo.asp</a><br />
<a href="http://int64.org/" rel="nofollow">http://int64.org/</a><br />
<a href="http://dev.kquery.com/" rel="nofollow">http://dev.kquery.com/</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1307480</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1307480</guid><dc:creator><![CDATA[TCP&#x2F;IP]]></dc:creator><pubDate>Sat, 16 Jun 2007 23:02:25 GMT</pubDate></item><item><title><![CDATA[Reply to Winsock - Game-Server Emulator on Sun, 17 Jun 2007 10:27:57 GMT]]></title><description><![CDATA[<p>Scheiße!!!<br />
Ich habe gerade solch ein riesen Post geschrieben. und dann kam ein Fehler beim &quot;Absenden&quot;!</p>
<p>Recv-Func</p>
<pre><code class="language-cpp">SOCKET client[MAX_CLIENTS - 1];
char buf[1024];
rc = recv(client[i], buf, sizeof(buf), 0);
buf[rc] = '&lt;!--POST BOX--&gt;';
ShowNotice(&quot;Client #%d [%s]: &quot;, i, inet_ntoa(cinfo[i].sin_addr));
coprint(CL_WHITE, &quot;%d\n\n&quot;, rc);
for(i = 0; i &lt; rc; i++)
   printf(&quot;\n%x  %d %c\n&quot;, buf[i], buf[i], buf[i]);
</code></pre>
<p>2. Spiele - Ragnarok / Rose</p>
<ol>
<li>Ragnarok</li>
</ol>
<p>Wenn ich versuche mit einem Client zu meinem Server zu connecten (Login),<br />
ist das das Paket, was ich bekomme:</p>
<blockquote>
<p>64 100 d</p>
<p>0 0</p>
<p>14 20 ¶</p>
<p>0 0</p>
<p>0 0</p>
<p>0 0</p>
<p>74 116 t</p>
<p>65 101 e</p>
<p>73 115 s</p>
<p>74 116 t</p>
<p>31 49 1</p>
<p>0 0</p>
<p>6a 106 j</p>
<p>0 0</p>
<p>0 0</p>
<p>0 0</p>
<p>68 104 h</p>
<p>74 116 t</p>
<p>0 0</p>
<p>31 49 1</p>
<p>31 49 1</p>
<p>31 49 1</p>
<p>31 49 1</p>
<p>31 49 1</p>
<p>31 49 1</p>
<p>31 49 1</p>
<p>0 0</p>
<p>0 0</p>
<p>0 0</p>
<p>0 0</p>
<p>74 116 t</p>
<p>65 101 e</p>
<p>73 115 s</p>
<p>74 116 t</p>
<p>32 50 2</p>
<p>0 0</p>
<p>0 0</p>
<p>0 0</p>
<p>68 104 h</p>
<p>0 0</p>
<p>32 50 2</p>
<p>32 50 2</p>
<p>32 50 2</p>
<p>32 50 2</p>
<p>0 0</p>
<p>0 0</p>
<p>0 0</p>
<p>0 0</p>
<p>0 0</p>
<p>0 0</p>
<p>0 0</p>
<p>0 0</p>
<p>0 0</p>
<p>0 0</p>
<p>12 18 <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/2195.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--up-down_arrow"
      title=":up-down_arrow:"
      alt="↕"
    /></p>
</blockquote>
<p>Da ist auch alles drinnen:<br />
[0] : 0x64<br />
[1] : 0x00<br />
ist der Header, und steht dafür, dass das das Login-Packet ist.<br />
[2] ist die Client-Version<br />
und dann folgt noch der Username, das Password und noch etwas.</p>
<p>Es gibt bei RO auch das Error-Paket:<br />
[0] = 0x6A<br />
[1] = 0x00<br />
[2] = ErrorCode 0-3<br />
[3-23] = 0x00<br />
wenn ich das schicken möchte:</p>
<pre><code class="language-cpp">buf[0] = 0x6A;
buf[1] = 0x00;
buf[2] = 0x01;
for(i = 3; i &lt; 24; i++)
   buf[i] = 0x00;
printf(&quot;\n\nNEW PACKET\n\n&quot;);
for(i = 0; i &lt; 24; i++)
   printf(&quot;\n%x %d %c\n&quot;, buf[i], buf[i], buf[i]);
send(client[i], buf, 24, 0);
</code></pre>
<p>Kommt beim Client nichts an..<br />
Muss ich für das schicken einen anderen Variablen-Typen nehmen, oder wie soll man das schicken?</p>
<ol start="2">
<li>
<p>Rose<br />
Das Login-Packet habe ich ja schon mal geschrieben.<br />
Die Länge davon betrug 6, von dem RO Packet ist die Länge 55, da pass ja auch alles rein.<br />
Aber bei dem Rose-Packet verstehe ich nicht wo da alles hinein soll, wie z.B. der Username/Password.<br />
Kann es sein, dass Rose UDP oder anderes benutzt, und dadurch solche Verkrüppelungen auftauchen?</p>
</li>
<li>
<p>weiß ich nun endlich, wo bei Ethereal, einem Packet-Sniffer, die Pakete stecken.<br />
d.h. dass ich Ethereal benutzen kann, um auf die Pakete mit Paketen zu antworten..<br />
Immerhin weiß ich es jetzt so ein bisschen ^^'<br />
da sind nämlich so viele Dinge:<br />
-Identification<br />
-Checksum<br />
-Header<br />
-noch ein Checksum<br />
da wusste ich gar nicht, was da jetzt eigentlich das Paket ist</p>
</li>
</ol>
<p>Hmmm, da war noch eine Frage, aber die habe ich nun vergessen, ich werde sie, falls sie mir wieder einfällt, später stellen.</p>
<p>Ich hoffe, dass mir jemand weiter helfen kann <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/1307564</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1307564</guid><dc:creator><![CDATA[ws2_32]]></dc:creator><pubDate>Sun, 17 Jun 2007 10:27:57 GMT</pubDate></item><item><title><![CDATA[Reply to Winsock - Game-Server Emulator on Sun, 17 Jun 2007 12:05:03 GMT]]></title><description><![CDATA[<p>Wenn beim Client nichts ankommt, dann stimmt etwas mit der Verbindung nicht. <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/1307619</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1307619</guid><dc:creator><![CDATA[TCP&#x2F;IP]]></dc:creator><pubDate>Sun, 17 Jun 2007 12:05:03 GMT</pubDate></item><item><title><![CDATA[Reply to Winsock - Game-Server Emulator on Sun, 17 Jun 2007 12:09:53 GMT]]></title><description><![CDATA[<p>Hier schreibst du Werte in den Puffer:</p>
<pre><code class="language-cpp">buf[0] = 0x6A;
buf[1] = 0x00;
buf[2] = 0x01;
</code></pre>
<p>Zwei Zeilen später überschreibst du den Puffer mit Nullen</p>
<pre><code class="language-cpp">for(i = 3; i &lt; 24; i++)
   buf[i] = 0x00;
</code></pre>
<p><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>
]]></description><link>https://www.c-plusplus.net/forum/post/1307624</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1307624</guid><dc:creator><![CDATA[TCP&#x2F;IP]]></dc:creator><pubDate>Sun, 17 Jun 2007 12:09:53 GMT</pubDate></item><item><title><![CDATA[Reply to Winsock - Game-Server Emulator on Sun, 17 Jun 2007 12:10:58 GMT]]></title><description><![CDATA[<p>Ach quatsch i geht ja ab 3 los...das war zu voreilig...vergiss es wieder <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/1307626</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1307626</guid><dc:creator><![CDATA[TCP&#x2F;IP]]></dc:creator><pubDate>Sun, 17 Jun 2007 12:10:58 GMT</pubDate></item><item><title><![CDATA[Reply to Winsock - Game-Server Emulator on Sun, 17 Jun 2007 14:03:44 GMT]]></title><description><![CDATA[<p>Ist das mit dem:<br />
send(client[i], buf, 24, 0);</p>
<p>denn richtig?</p>
<p><strong>send( empfangs-Socket , buf[0-1024] , Größe-&gt;also nur buf[0-23] , 0 )</strong><br />
<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/1307707</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1307707</guid><dc:creator><![CDATA[ws2_32]]></dc:creator><pubDate>Sun, 17 Jun 2007 14:03:44 GMT</pubDate></item><item><title><![CDATA[Reply to Winsock - Game-Server Emulator on Sun, 17 Jun 2007 14:36:47 GMT]]></title><description><![CDATA[<p>Edit:<br />
Noch einmal kurz eine Frage:<br />
char buf[1024] ist ein char array,<br />
mit Speicherplätzen von 0, 1, 2, 3, ..., 1023, 1024.<br />
Also insgesamt 1025, will ich einen String darin speichern, geht einer für das Nullterminierungszeichen drauf, also 1025 - 1 = 1024.<br />
Das muss aber auch nur so sein, wenn ich es als String ausgebe, z.B.:<br />
<em>printf(&quot;%s&quot;, buf);</em><br />
Mache ich das aber nicht, also wenn ich einfach nur Zahlen von 0-255 oder chars darin speichere, habe ich 1025 Plätze.<br />
Und wenn ich buf sende, z.B. so:<br />
<em>send(s, buf, 1025 oder sizeof(buf), 0);</em><br />
dann brauche ich auch kein Nullterminierungszeichen.</p>
<p>Stimmt das alles? .__.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1307740</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1307740</guid><dc:creator><![CDATA[ws2_32]]></dc:creator><pubDate>Sun, 17 Jun 2007 14:36:47 GMT</pubDate></item><item><title><![CDATA[Reply to Winsock - Game-Server Emulator on Sun, 17 Jun 2007 15:47:20 GMT]]></title><description><![CDATA[<p>ws2_32 schrieb:</p>
<blockquote>
<p>Ist das mit dem:<br />
send(client[i], buf, 24, 0);<br />
denn richtig?<br />
<strong>send( empfangs-Socket , buf[0-1024] , Größe-&gt;also nur buf[0-23] , 0 )</strong><br />
<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>Ja, das ist ok. Es empfiehlt sich auch den Rückgabewert von send zu kontrollieren, ob auch alles gesendet wurde.</p>
<p>ws2_32 schrieb:</p>
<blockquote>
<p>Edit:<br />
Noch einmal kurz eine Frage:<br />
char buf[1024] ist ein char array,<br />
mit Speicherplätzen von 0, 1, 2, 3, ...</p>
</blockquote>
<p>1024 Speicherplätze der Größe 1 Byte mit dem Index von 0 bis einschließlich 1023.<br />
Für einen String geht ein Speicherplatz für das '\0' Zeichen drauf, bleiben 1023 Speicherplätze für den String.<br />
Senden kannst du natürlich 1024 Zeichen ohne das '\0'.</p>
<p>Was mir noch aufgefallen war:</p>
<p>ws2_32 schrieb:</p>
<blockquote>
<p>buf[0] = 0x6A<br />
buf[1] = 0x00<br />
buf[2] = 0x01;<br />
for(i = 3; i &lt; 24; i++)<br />
buf[i] = 0x00;</p>
</blockquote>
<p>Tut auch die Zeile:</p>
<pre><code class="language-cpp">sprintf( buf, &quot;%d %d %d&quot;, 0x6A, 0x00, 0x01 );
</code></pre>
<p><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="😉"
    /> <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/1307797</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1307797</guid><dc:creator><![CDATA[TCP&#x2F;IP]]></dc:creator><pubDate>Sun, 17 Jun 2007 15:47:20 GMT</pubDate></item><item><title><![CDATA[Reply to Winsock - Game-Server Emulator on Fri, 29 Jun 2007 07:45:31 GMT]]></title><description><![CDATA[<p>Schön guten Tag, ws2_32 wenn du wirklich interesse hast einen emulator zu Programieren, dann kannst du uns gerne helfen, wir Programmieren in C einen Emulator für Neocron.<br />
Die Seite von uns ist, <a href="http://projekt-nc.de" rel="nofollow">http://projekt-nc.de</a></p>
<p>MFG Viper</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1314678</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1314678</guid><dc:creator><![CDATA[Viper Projekt-NC]]></dc:creator><pubDate>Fri, 29 Jun 2007 07:45:31 GMT</pubDate></item><item><title><![CDATA[Reply to Winsock - Game-Server Emulator on Fri, 29 Jun 2007 09:42:44 GMT]]></title><description><![CDATA[<p>&lt;Error Detected&gt;<br />
char buf[1024]; // 1024 Bytes from Index 0 to 1023 !<br />
&lt;Error Detected&gt;<br />
buf[rc] = '&lt;!--POST BOX--&gt;'; // Error ! Konstant too Large !</p>
<p>&lt;There were some errors&gt;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1314779</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1314779</guid><dc:creator><![CDATA[Error Detector [active]]]></dc:creator><pubDate>Fri, 29 Jun 2007 09:42:44 GMT</pubDate></item></channel></rss>