<?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[Kommunikation mit Java-Server]]></title><description><![CDATA[<p>Huhu, ich möchte gerne einen Bot für das Spiel Minecraft programmieren, leider<br />
verwendet Java Big-Endianess, hat natürlich fixe Größen für Datentypen und andere Zeichenkodierungen. So sehen die Daten aus, die gesendet werden müssen: <a href="http://mc.kev009.com/Protocol#Data_Types" rel="nofollow">http://mc.kev009.com/Protocol#Data_Types</a></p>
<p>Ich möchte einen tcp::iostream aus boost verwenden, allerdings weiß ich nicht, wie ich den so &quot;umbiegen&quot; kann, dass alle Daten richtig gesendet werden. Hat jemand eine Idee?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/289931/kommunikation-mit-java-server</link><generator>RSS for Node</generator><lastBuildDate>Tue, 18 Aug 2026 18:47:00 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/289931.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 15 Jul 2011 16:56:50 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Kommunikation mit Java-Server on Fri, 15 Jul 2011 16:56:50 GMT]]></title><description><![CDATA[<p>Huhu, ich möchte gerne einen Bot für das Spiel Minecraft programmieren, leider<br />
verwendet Java Big-Endianess, hat natürlich fixe Größen für Datentypen und andere Zeichenkodierungen. So sehen die Daten aus, die gesendet werden müssen: <a href="http://mc.kev009.com/Protocol#Data_Types" rel="nofollow">http://mc.kev009.com/Protocol#Data_Types</a></p>
<p>Ich möchte einen tcp::iostream aus boost verwenden, allerdings weiß ich nicht, wie ich den so &quot;umbiegen&quot; kann, dass alle Daten richtig gesendet werden. Hat jemand eine Idee?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2093261</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2093261</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Fri, 15 Jul 2011 16:56:50 GMT</pubDate></item><item><title><![CDATA[Reply to Kommunikation mit Java-Server on Fri, 15 Jul 2011 16:58:35 GMT]]></title><description><![CDATA[<p>Was heißt &quot;umbiegen&quot; und &quot;dass alle Daten richtig gesendet werden&quot;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2093262</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2093262</guid><dc:creator><![CDATA[use #define!]]></dc:creator><pubDate>Fri, 15 Jul 2011 16:58:35 GMT</pubDate></item><item><title><![CDATA[Reply to Kommunikation mit Java-Server on Fri, 15 Jul 2011 17:02:33 GMT]]></title><description><![CDATA[<p>Wenn ich da einen int reinschreibe, will ich, dass da nicht die Stringform eines ints, sondern die bytes eines ints am andere Ende rauskommen. Selbes für andere Datentypen. Big-Endian Umwandlung soll auch automatisch vorgenommen werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2093264</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2093264</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Fri, 15 Jul 2011 17:02:33 GMT</pubDate></item><item><title><![CDATA[Reply to Kommunikation mit Java-Server on Fri, 15 Jul 2011 17:15:08 GMT]]></title><description><![CDATA[<p>fragst du grad nachd er entsprechenden funktion innerhalb von boost oder möchtest du eine möglichkeit wie du zwischen den endianessen umwandeln kannst (z.b. per funktion?)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2093273</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2093273</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Fri, 15 Jul 2011 17:15:08 GMT</pubDate></item><item><title><![CDATA[Reply to Kommunikation mit Java-Server on Fri, 15 Jul 2011 17:17:16 GMT]]></title><description><![CDATA[<p>Konkret möchte ich folgendes erreichen:</p>
<pre><code class="language-cpp">tcp::iostream stream;
stream &lt;&lt; some_int; // 4 Byte, Big endian werden geschrieben
stream &lt;&lt; some_short; // 2 Byte, Big endian
stream &lt;&lt; some_std_string; // utf8 string
stream &lt;&lt; some_std_wstring; // utf16 string
</code></pre>
<p>Und so weiter.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2093274</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2093274</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Fri, 15 Jul 2011 17:17:16 GMT</pubDate></item><item><title><![CDATA[Reply to Kommunikation mit Java-Server on Fri, 15 Jul 2011 19:43:17 GMT]]></title><description><![CDATA[<p>Kann man das nicht mit den IOstream Funktionen read und write machen? Die schreiben daten ja byteweise in den stream, statt als Text formatiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2093361</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2093361</guid><dc:creator><![CDATA[Cachus]]></dc:creator><pubDate>Fri, 15 Jul 2011 19:43:17 GMT</pubDate></item><item><title><![CDATA[Reply to Kommunikation mit Java-Server on Fri, 15 Jul 2011 20:15:16 GMT]]></title><description><![CDATA[<p>Möglich, ich hätte das nur gerne über die Streamoperatoren <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/2093377</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2093377</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Fri, 15 Jul 2011 20:15:16 GMT</pubDate></item><item><title><![CDATA[Reply to Kommunikation mit Java-Server on Fri, 15 Jul 2011 20:20:47 GMT]]></title><description><![CDATA[<p>Demnächst frage ich auch nach, wie ich mit einem Hammer am besten mein WC repariert bekomme <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>
<p>Es gibt für verschiedene Aufgaben verschiedene Werkzeuge, die am besten geeignet sind. Stream-Operatoren schreiben in Textform, also baust du entweder die Gegenseite so um, daß sie Text-Eingaben akzeptieren oder du verwendest etwas, das binäre Daten schreiben kann.</p>
<p>(Alternativ baust du dir eine Hilfsklasse Java-Number, die die Stream-Operatoren so überlädt, daß sie binär schreibt)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2093380</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2093380</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 15 Jul 2011 20:20:47 GMT</pubDate></item><item><title><![CDATA[Reply to Kommunikation mit Java-Server on Fri, 15 Jul 2011 20:26:19 GMT]]></title><description><![CDATA[<p>Kann mir denn niemand eine Lösung anbieten, die das ganze so löst?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2093388</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2093388</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Fri, 15 Jul 2011 20:26:19 GMT</pubDate></item><item><title><![CDATA[Reply to Kommunikation mit Java-Server on Fri, 15 Jul 2011 20:32:49 GMT]]></title><description><![CDATA[<p>Klar können wir, aber wir können nichts dafür, wenn dir diese Lösungen nicht gefallen.</p>
<p>Aber da du soviel Wert auf die Stream-Operatoren legst:</p>
<pre><code class="language-cpp">class JavaNumber
{
  int val;
public:
  JavaNumber(int v) : val(v) {}
  operator int() {return val;}
};

ostream&amp; operator&lt;&lt;(ostream&amp; s,const JavaNumber&amp; v)
{
  s.write((char*)&amp;v,sizeof(v));
  return s;
}

istream&amp; operator&gt;&gt;(istream&amp; s,JavaNumber&amp; v)
{
  s.read((char*)&amp;v,sizeof(v));
  return s;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2093392</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2093392</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 15 Jul 2011 20:32:49 GMT</pubDate></item><item><title><![CDATA[Reply to Kommunikation mit Java-Server on Fri, 15 Jul 2011 21:55:12 GMT]]></title><description><![CDATA[<p>So könnte es gehen:</p>
<pre><code class="language-cpp">class BinaryOStream
{
public:
	virtual void write(const void* mem, std::streamsize size)=0;
	virtual bool is_open()=0;
	virtual void close()=0;
	virtual bool fail()=0;

	BinaryOStream&amp; operator&lt;&lt;(char v)
	{
		write(&amp;v, sizeof(v));
		return *this;
	}
	BinaryOStream&amp; operator&lt;&lt;(short v)
	{
        // Vertauschen der beiden Bytes hier
		write(&amp;v, sizeof(v));
		return *this;
	}
... // für alle in Frage kommenden Typen operator &lt;&lt; definieren
};

class BinaryOFStream : public BinaryOStream
{
private:
	std::ofstream m_stream; // oder eben ein anderer Stream

public:
	BinaryOFStream([s]const std::string&amp;[/s]const char* name)
	{
		m_stream.open(name[s].c_str()[/s],std::ios::out|std::ios::binary);
	}

	void write(const void* mem, std::streamsize size)
	{
		m_stream.write(reinterpret_cast&lt;const char*&gt;(mem), size);
	}

	bool is_open()
	{
		return m_stream.is_open();
	}

	void close()
	{
		m_stream.close();
	}

	bool fail()
	{
		return m_stream.fail();
	}

};
</code></pre>
<p>So mehr oder weniger übernommen aus dem C++ Codebook.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2093404</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2093404</guid><dc:creator><![CDATA[yahendrik]]></dc:creator><pubDate>Fri, 15 Jul 2011 21:55:12 GMT</pubDate></item><item><title><![CDATA[Reply to Kommunikation mit Java-Server on Fri, 15 Jul 2011 21:02:08 GMT]]></title><description><![CDATA[<p>Sieht schon mal gut aus <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 jetzt nicht noch eine salomonische Lösung kommt, übernehm ich das so <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/2093418</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2093418</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Fri, 15 Jul 2011 21:02:08 GMT</pubDate></item><item><title><![CDATA[Reply to Kommunikation mit Java-Server on Sat, 16 Jul 2011 23:08:57 GMT]]></title><description><![CDATA[<p>Planänderung. Da das ganze auf Mac OS laufen soll (wo ich boost einfach nicht zum laufen bekomme) muss ich sowieso meine eigene Socketklasse schreiben. Die Mühe eines Streams mache ich mir aber nicht. Zumindest keinen Standardkonformen.</p>
<p>Allerdings habe ich ein Problem, eine geeignete Funktion zum lesen zu basteln.<br />
So sieht meine Funktion im Moment aus:</p>
<pre><code class="language-cpp">std::vector&lt;char&gt; binary_socket::read(int maxlength)
    {
        int received;
        std::vector&lt;char&gt; buffer(maxlength);

        if((received = recv(sockfd, buffer.data(), maxlength, 0)) == -1)
            throw socket_error(&quot;disconnected from host&quot;);

        buffer.erase(buffer.begin() + received, buffer.end());
        return buffer;
    }
</code></pre>
<p>Das Problem ist, dass hier auch weniger Daten ankommen können, als ich haben möchte. Ich möchte allerdings exakt so viel (Schließlich ist die Größe von Datentypen konstant), außerdem wäre ein Timeout nicht schlecht. Ich habe von der Funktion select() gelesen, mir der man sowas machen kann, allerdings ist mir deren Verwendung nicht klar. Jemand hier, der sich auskennt? <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/2093742</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2093742</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Sat, 16 Jul 2011 23:08:57 GMT</pubDate></item><item><title><![CDATA[Reply to Kommunikation mit Java-Server on Mon, 18 Jul 2011 07:27:16 GMT]]></title><description><![CDATA[<p>Wenn das doch sowieso ein Multiplattform Bot werden soll, warum benutzt du dann nicht gleich Java? So wie ich das jetzt sehe handelst du dir durch die Wahl von C++ 2 Probleme ein, die du mit Java sofort gelöst hättest.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2094112</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2094112</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Mon, 18 Jul 2011 07:27:16 GMT</pubDate></item><item><title><![CDATA[Reply to Kommunikation mit Java-Server on Mon, 18 Jul 2011 10:04:33 GMT]]></title><description><![CDATA[<p>Jop, dazu hab ich mich gestern entschieden. Wenn mir niemand helfen will. Dann halt nicht. :p</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2094174</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2094174</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Mon, 18 Jul 2011 10:04:33 GMT</pubDate></item><item><title><![CDATA[Reply to Kommunikation mit Java-Server on Mon, 18 Jul 2011 10:19:49 GMT]]></title><description><![CDATA[<p>mal rein aus interesse, wie alt bist du mister PI ?<br />
so im bereich anfang 20 oder sogar jünger?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2094191</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2094191</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Mon, 18 Jul 2011 10:19:49 GMT</pubDate></item><item><title><![CDATA[Reply to Kommunikation mit Java-Server on Mon, 18 Jul 2011 21:51:16 GMT]]></title><description><![CDATA[<p>16 :p</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2094580</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2094580</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Mon, 18 Jul 2011 21:51:16 GMT</pubDate></item><item><title><![CDATA[Reply to Kommunikation mit Java-Server on Tue, 19 Jul 2011 09:02:24 GMT]]></title><description><![CDATA[<p>ok, super. erstmal respekt, da ich denke dass du einiges auf dem kasten hast in sachen fachwissen und c++</p>
<p>aber andererseits auch kritik: es muss nicht alles genau so gemacht werden wie du meinst. viele wege führen nach rom, gute und nicht so gute. und das muss nicht an jeder stelle, wie du es machst, kritisieren und darauf hinweisen. (denk an die RAII [von mir immer liebevoll R A 2 genannt xD] diskussion)</p>
<p>aber mach was deine fachliche kompetenz angeht weiter so</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2094687</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2094687</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Tue, 19 Jul 2011 09:02:24 GMT</pubDate></item><item><title><![CDATA[Reply to Kommunikation mit Java-Server on Tue, 19 Jul 2011 09:06:25 GMT]]></title><description><![CDATA[<p>Der Bot läuft übrigens mittlerweile in Java. <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>Danke, Skym0sh0. Allerdings bin ich extrem pingelig, was RAII angeht (Yay, was für eine Neuigkeit.), und es macht einem nur mehr Arbeit, es nicht zu verwenden. Ich sehe auch keinen Grund, nicht RAII zu verwenden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2094689</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2094689</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Tue, 19 Jul 2011 09:06:25 GMT</pubDate></item></channel></rss>