<?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[Serverprogrammierung - Theorie?]]></title><description><![CDATA[<p>Ich würde gerne die Serverprogrammierung unter C++ lernen. Fakt ist, dass ich noch nicht viel Erfahrung habe. Deswegen würde ich auch gerne auf Multithreading verzichten - das wird mir nur zu unübersichtlich. Welches Betriebssystem ich nehme weiss ich noch nicht genau. Wie man mit Sockets umgeht weiss ich schon, allerdings würde ich gerne wissen wie man den Code eines Servers strukturiert (Klassendesign etc.). Über Google finde ich nur Anleitungen, wie man Serversockets verwendet, aber das kenn ich schliesslich schon.<br />
Was Sicherheit angeht: Tipps wären da natürlich hilfreich, aber erstmal will ich meine Programme sowieso nicht ans Internet hängen.<br />
Gibt es eine Möglichkeit Server mit mehreren Verbindungen ohne Multithreading zu organisieren und wenn ja wie?</p>
<p>Ob ich damit demnächst anfange weiss ich noch nicht, aber interessieren tut mich das Thema auf jeden Fall...</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/303966/serverprogrammierung-theorie</link><generator>RSS for Node</generator><lastBuildDate>Mon, 10 Aug 2026 02:32:29 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/303966.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 26 May 2012 13:55:07 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Serverprogrammierung - Theorie? on Sat, 26 May 2012 13:55:07 GMT]]></title><description><![CDATA[<p>Ich würde gerne die Serverprogrammierung unter C++ lernen. Fakt ist, dass ich noch nicht viel Erfahrung habe. Deswegen würde ich auch gerne auf Multithreading verzichten - das wird mir nur zu unübersichtlich. Welches Betriebssystem ich nehme weiss ich noch nicht genau. Wie man mit Sockets umgeht weiss ich schon, allerdings würde ich gerne wissen wie man den Code eines Servers strukturiert (Klassendesign etc.). Über Google finde ich nur Anleitungen, wie man Serversockets verwendet, aber das kenn ich schliesslich schon.<br />
Was Sicherheit angeht: Tipps wären da natürlich hilfreich, aber erstmal will ich meine Programme sowieso nicht ans Internet hängen.<br />
Gibt es eine Möglichkeit Server mit mehreren Verbindungen ohne Multithreading zu organisieren und wenn ja wie?</p>
<p>Ob ich damit demnächst anfange weiss ich noch nicht, aber interessieren tut mich das Thema auf jeden Fall...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2215761</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2215761</guid><dc:creator><![CDATA[WannaBe1337]]></dc:creator><pubDate>Sat, 26 May 2012 13:55:07 GMT</pubDate></item><item><title><![CDATA[Reply to Serverprogrammierung - Theorie? on Sat, 26 May 2012 14:09:40 GMT]]></title><description><![CDATA[<p>Ich würde gerne Bergsteigen in den Alpen lernen. Fakt ist, dass ich noch nicht viel Erfahrung habe. Deswegen würde ich auch gerne auf Bergsteigerausrüstung verzichten - das wird mir nur zu unübersichtlich. Welchen Berg ich nehme weiss ich noch nicht genau. Wie man mit Straßen umgeht weiss ich schon, allerdings würde ich gerne wissen wie man den Weg auf einen Berg findet (Bergführer etc.). Über Google finde ich nur Anleitungen, wie man Straßenkarten verwendet, aber das kenn ich schliesslich schon.<br />
Was Sicherheit angeht: Tipps wären da natürlich hilfreich, aber erstmal will ich meinen Berg sowieso nicht ganz hinauf gehen.<br />
Gibt es eine Möglichkeit Berge mit steilen Abhängen ohne Bergsteigerausrüstung zu erklimmen und wenn ja wie?</p>
<p>Ob ich damit demnächst anfange weiss ich noch nicht, aber interessieren tut mich das Thema auf jeden Fall...</p>
<p>Wieso denken die Leute eigentlich immer, es wäre alles einfacher, wenn man es nur halbherzig und ohne die richtige Ausrüstung angeht? Wenn dich das Thema interessiert und du das wirklich machen möchtest, dann versuch es auch richtig zu machen. Wenn du schon Angst vor nützlichen Programmiermitteln hast, weil du sie noch nicht kennst, oder wenn du nicht die Motivation hast, dass das Endresultat benutzbar sein soll, dann ist das ein schlechter Anfang.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2215765</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2215765</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sat, 26 May 2012 14:09:40 GMT</pubDate></item><item><title><![CDATA[Reply to Serverprogrammierung - Theorie? on Sat, 26 May 2012 14:20:24 GMT]]></title><description><![CDATA[<p>Du kannst mehrere Verbindungen mit select() &quot;überwachen&quot;. Trotzdem würde ich Multithreading vorziehen. (Sowohl was Performance, als auch was den Aufwand angeht.) Viel &quot;Interthreadkommunikation&quot; hast du da ja nicht, insofern ist das kein Problem. Mit einem modernen Compiler kannst du sogar C++11 std::thread, std::future etc. nutzen, die sind wirklich leicht zu verwenden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2215771</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2215771</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Sat, 26 May 2012 14:20:24 GMT</pubDate></item><item><title><![CDATA[Reply to Serverprogrammierung - Theorie? on Sat, 26 May 2012 14:30:20 GMT]]></title><description><![CDATA[<p>@cookie451 Danke, dass werde ich mir mal angucken. Es geht mir ja nicht um riesige RPG-Server, sonder eher um einen kleinen Pong-Server etc.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2215777</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2215777</guid><dc:creator><![CDATA[WannaBe1337]]></dc:creator><pubDate>Sat, 26 May 2012 14:30:20 GMT</pubDate></item><item><title><![CDATA[Reply to Serverprogrammierung - Theorie? on Sat, 26 May 2012 14:32:34 GMT]]></title><description><![CDATA[<p>Sag ich ja. Wenn du wirklich Performance brauchst, willst du eine asynchrone API. <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="😉"
    /><br />
Multithreading ist schon ok. Relativ wenig Aufwand und trotzdem recht performant.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2215782</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2215782</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Sat, 26 May 2012 14:32:34 GMT</pubDate></item><item><title><![CDATA[Reply to Serverprogrammierung - Theorie? on Sat, 26 May 2012 14:34:29 GMT]]></title><description><![CDATA[<p>Epic <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/2215783</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2215783</guid><dc:creator><![CDATA[cvcv]]></dc:creator><pubDate>Sat, 26 May 2012 14:34:29 GMT</pubDate></item><item><title><![CDATA[Reply to Serverprogrammierung - Theorie? on Sat, 26 May 2012 17:37:09 GMT]]></title><description><![CDATA[<p>cooky451 schrieb:</p>
<blockquote>
<p>Du kannst mehrere Verbindungen mit select() &quot;überwachen&quot;. Trotzdem würde ich Multithreading vorziehen.</p>
</blockquote>
<p>Warum?</p>
<p>cooky451 schrieb:</p>
<blockquote>
<p>(Sowohl was Performance, als auch was den Aufwand angeht.)</p>
</blockquote>
<p>Der Aufwand ist doch viel höher mit der ganzen Synchronisation. Und schneller wird das dadurch auch nicht automatisch.</p>
<p>cooky451 schrieb:</p>
<blockquote>
<p>Viel &quot;Interthreadkommunikation&quot; hast du da ja nicht, insofern ist das kein Problem.</p>
</blockquote>
<p>Mehr davon als unbedingt nötig ist immer schlecht. Und hier hätte man sehr wohl nicht-triviale Synchronisation. Mal ganz abgesehen davon, dass man <code>accept</code> und <code>recv</code> nicht abbrechen kann, also kann so ein Programm schwer korrekt terminieren.</p>
<p>cooky451 schrieb:</p>
<blockquote>
<p>Mit einem modernen Compiler kannst du sogar C++11 std::thread, std::future etc. nutzen, die sind wirklich leicht zu verwenden.</p>
</blockquote>
<p>NOT</p>
<p>Wenn etwas dabei rauskommen soll, nimm die asynchronen Sockets von Boost.Asio. Und lass bloß die Finger von Threads.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2215847</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2215847</guid><dc:creator><![CDATA[TyRoXx]]></dc:creator><pubDate>Sat, 26 May 2012 17:37:09 GMT</pubDate></item><item><title><![CDATA[Reply to Serverprogrammierung - Theorie? on Sat, 26 May 2012 17:47:18 GMT]]></title><description><![CDATA[<p>TyRoXx schrieb:</p>
<blockquote>
<p>NOT</p>
</blockquote>
<p>Ja... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2215851</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2215851</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Sat, 26 May 2012 17:47:18 GMT</pubDate></item><item><title><![CDATA[Reply to Serverprogrammierung - Theorie? on Sun, 27 May 2012 07:02:39 GMT]]></title><description><![CDATA[<p>TyRoXx schrieb:</p>
<blockquote>
<p>Wenn etwas dabei rauskommen soll, nimm die asynchronen Sockets von Boost.Asio. Und lass bloß die Finger von Threads.</p>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
<p>Wobei ich jetzt nicht unbedingt gegen Threads bin. Aber sicherlich nicht 1 Thread pro Client, das ist Overkill.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2215932</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2215932</guid><dc:creator><![CDATA[314159265358979__]]></dc:creator><pubDate>Sun, 27 May 2012 07:02:39 GMT</pubDate></item><item><title><![CDATA[Reply to Serverprogrammierung - Theorie? on Sun, 27 May 2012 17:44:28 GMT]]></title><description><![CDATA[<p>Immer wieder schön die ganzen fundierten Antworten hier.<br />
Wo sind eigentlich die Evangelisten abgeblieben? Ich beginne die schon fast zu vermissen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2216059</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2216059</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Sun, 27 May 2012 17:44:28 GMT</pubDate></item><item><title><![CDATA[Reply to Serverprogrammierung - Theorie? on Sun, 27 May 2012 18:34:43 GMT]]></title><description><![CDATA[<p>Threads sind reichlich low-level. Da nimmt man dann doch besser etwas höher angesiedelte Funktionalitäten. Leider hats nicht allzu vieles in den Standard geschafft, was darüber liegt. Bestenfalls wäre da noch std::async/std::future zu nennen. Ich denke mal, dass boost.asio ein guter Kompromiss ist, um noch PLattformunabhängig zu bleiben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2216074</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2216074</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Sun, 27 May 2012 18:34:43 GMT</pubDate></item><item><title><![CDATA[Reply to Serverprogrammierung - Theorie? on Sun, 27 May 2012 19:01:11 GMT]]></title><description><![CDATA[<p>Also dein Rechner ist sozusagen ein Server. Du kannst ihn auch als Server verwenden nur der verbraucht dann mehr strom als herkömmliche Server. Es gibt auf Windows und Linux Bibliotheken die du verwenden kannst um Informationen zwischen Client und Server zu tauschen. z.B wenn du ein Chat programmierst ist das Chat Fenster der Client und wenn du z.B auf deinem Rechner ein Server aufbaust und dich mit dem Chat Fenster in dem Server verbindest und ein anderer Rechner sich auch mit dem Client in dem Server verbindet kannst du über den Server nachrichten versenden. Du programmierst den Client so das er eine Nachrichten versenden kann der Server muss dann eine Nachricht empfangen können und versendet die Nachricht dann an alle anderen Rechner die auch mit dem Server verbunden sind.</p>
<p>Wenn ich ein Fehler drin hab bitte verbessern.</p>
<p>Gruss</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2216085</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2216085</guid><dc:creator><![CDATA[Cho++]]></dc:creator><pubDate>Sun, 27 May 2012 19:01:11 GMT</pubDate></item><item><title><![CDATA[Reply to Serverprogrammierung - Theorie? on Sun, 27 May 2012 19:27:00 GMT]]></title><description><![CDATA[<p>TyRoXx schrieb:</p>
<blockquote>
<p>Mal ganz abgesehen davon, dass man <code>accept</code> und <code>recv</code> nicht abbrechen kann, also kann so ein Programm schwer korrekt terminieren.</p>
</blockquote>
<p>Erstens könnte man die entsprechenden Sockets in non-blocking Modus versetzen. Aber das ist nicht mal erforderlich, denn zweitens kehren sowohl accept als auch recv zurück, wenn man die entsprechenden Sockets schließt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2216100</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2216100</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Sun, 27 May 2012 19:27:00 GMT</pubDate></item><item><title><![CDATA[Reply to Serverprogrammierung - Theorie? on Sun, 27 May 2012 21:23:15 GMT]]></title><description><![CDATA[<p>Belli schrieb:</p>
<blockquote>
<p>TyRoXx schrieb:</p>
<blockquote>
<p>Mal ganz abgesehen davon, dass man <code>accept</code> und <code>recv</code> nicht abbrechen kann, also kann so ein Programm schwer korrekt terminieren.</p>
</blockquote>
<p>Erstens könnte man die entsprechenden Sockets in non-blocking Modus versetzen. Aber das ist nicht mal erforderlich, denn zweitens kehren sowohl accept als auch recv zurück, wenn man die entsprechenden Sockets schließt.</p>
</blockquote>
<p>Was accept oder recv macht, wenn man den Socket schließt, ist meines Wissens nicht spezifiziert. Besser ist es, tatsächlich mit non-blocking zu arbeiten und erst dann accept bzw. recv aufzurufen, wenn auch tatsächlich jemand anklopft.</p>
<p>Die Entscheidung zwischen asynchron oder multithreaded kann man nicht so einfach beantworten, dass das eine einfacher und das andere schneller ist.</p>
<p>Also von der Komplexität geben die 2 Modelle sich nicht viel. Beides ist nicht ganz trivial. Einen Server zu implementieren ist halt eben nicht trivial.</p>
<p>Performancemässig hängt es von der Applikation ab. Wenn ein einzelner Request relativ viel Verarbeitung verursacht, ist es besser, den Request in einen separaten Thread zu verarbeiten, damit andere Verbindungen nicht blockiert werden. Bei wenig Verarbeitung ist in der Regel der asynchrone Ansatz schneller, da kein Kontextwechsel statt findet und keine Synchronisierung notwendig ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2216149</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2216149</guid><dc:creator><![CDATA[tntnet]]></dc:creator><pubDate>Sun, 27 May 2012 21:23:15 GMT</pubDate></item><item><title><![CDATA[Reply to Serverprogrammierung - Theorie? on Sun, 27 May 2012 21:30:26 GMT]]></title><description><![CDATA[<p>tntnet schrieb:</p>
<blockquote>
<p>Was accept oder recv macht, wenn man den Socket schließt, ist meines Wissens nicht spezifiziert. Besser ist es, tatsächlich mit non-blocking zu arbeiten und erst dann accept bzw. recv aufzurufen, wenn auch tatsächlich jemand anklopft.</p>
</blockquote>
<p>Da kann man auch gleich <code>select</code> nehmen. Oder funktioniert das ganz anders?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2216153</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2216153</guid><dc:creator><![CDATA[TyRoXx]]></dc:creator><pubDate>Sun, 27 May 2012 21:30:26 GMT</pubDate></item><item><title><![CDATA[Reply to Serverprogrammierung - Theorie? on Sun, 27 May 2012 21:49:54 GMT]]></title><description><![CDATA[<p>tntnet schrieb:</p>
<blockquote>
<p>Besser ist es, tatsächlich mit non-blocking zu arbeiten und erst dann accept bzw. recv aufzurufen, wenn auch tatsächlich jemand anklopft.</p>
</blockquote>
<p>Lieber select fragen.</p>
<p>tntnet schrieb:</p>
<blockquote>
<p>Performancemässig hängt es von der Applikation ab.</p>
</blockquote>
<p>Nö. Asynchrone Modelle dürften immer schneller sein. Nur merkt man das eben erst ab einer ordentlichen Menge Clienten.</p>
<p>tntnet schrieb:</p>
<blockquote>
<p>Also von der Komplexität geben die 2 Modelle sich nicht viel. Beides ist nicht ganz trivial. Einen Server zu implementieren ist halt eben nicht trivial.</p>
</blockquote>
<p>Doch, ein Pong Server ist extrem trivial. Und genau das ist das Problem. Wo will man bei einem trivialen Problem vernünftige Argumente für Lösungen finden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2216162</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2216162</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Sun, 27 May 2012 21:49:54 GMT</pubDate></item><item><title><![CDATA[Reply to Serverprogrammierung - Theorie? on Sun, 27 May 2012 23:16:12 GMT]]></title><description><![CDATA[<p>Asynchrone Verarbeitung und Threads sind keine orthogonalen Konzepte. Man kann auch beides haben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2216184</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2216184</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Sun, 27 May 2012 23:16:12 GMT</pubDate></item><item><title><![CDATA[Reply to Serverprogrammierung - Theorie? on Mon, 28 May 2012 15:39:35 GMT]]></title><description><![CDATA[<p>TyRoXx schrieb:</p>
<blockquote>
<p>tntnet schrieb:</p>
<blockquote>
<p>Was accept oder recv macht, wenn man den Socket schließt, ist meines Wissens nicht spezifiziert. Besser ist es, tatsächlich mit non-blocking zu arbeiten und erst dann accept bzw. recv aufzurufen, wenn auch tatsächlich jemand anklopft.</p>
</blockquote>
<p>Da kann man auch gleich <code>select</code> nehmen. Oder funktioniert das ganz anders?</p>
</blockquote>
<p>Das ist doch genau das, worauf ich hinaus wollte. Hätte ich vielleicht direkt darauf hinweisen sollen. Also Socket auf non-blocking und dann mit <code>select</code> warten, bis jemand anklopft. Und im <code>select</code> kann man dann noch eine pipe rein packen, womit ich den select geordnet wecken kann, wenn ich den Server runter fahren möchte.</p>
<p>cooky451 schrieb:</p>
<blockquote>
<p>tntnet schrieb:</p>
<blockquote>
<p>Performancemässig hängt es von der Applikation ab.</p>
</blockquote>
<p>Nö. Asynchrone Modelle dürften immer schneller sein. Nur merkt man das eben erst ab einer ordentlichen Menge Clienten.</p>
</blockquote>
<p>Das stimmt so nicht. Wenn die Verarbeitung einer Antwort signifikant lange dauert, dann ist das besser, wenn er in einem separaten Thread verarbeitet wird. Ein rein asynchroner Thread läuft auf genau einem Core und wenn ein Request bearbeitet wird, müssen die anderen warten.</p>
<p>Nehmen wir ein einfaches Rechenmodell: Ein Request kommt an und der Server braucht eine Sekunde, um die Antwort zu generieren. Während er die Antwort generiert, kann er im asynchronen Modell keine weiteren Requests verarbeiten. Er schafft also genau einen Request pro Sekunde. Wird der Request in einem Thread generiert, kann ein anderer Thread bereits den nächsten Request entgegennehmen und verarbeiten. Habe ich dann beispielsweise 8 Cores, kann der multithreaded Server halt 8 Requests pro Sekunde verarbeiten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2216360</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2216360</guid><dc:creator><![CDATA[tntnet]]></dc:creator><pubDate>Mon, 28 May 2012 15:39:35 GMT</pubDate></item><item><title><![CDATA[Reply to Serverprogrammierung - Theorie? on Mon, 28 May 2012 16:21:37 GMT]]></title><description><![CDATA[<p>Man kann immer noch (meine Posts liest ja offenbar niemand) asynchrone IO mit beliebig vielen Threads verwenden. Dein Beispiel ist daher totaler Schwachsinn.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2216393</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2216393</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Mon, 28 May 2012 16:21:37 GMT</pubDate></item><item><title><![CDATA[Reply to Serverprogrammierung - Theorie? on Mon, 28 May 2012 16:31:09 GMT]]></title><description><![CDATA[<p>tntnet schrieb:</p>
<blockquote>
<p>Also Socket auf non-blocking und dann mit <code>select</code> warten, bis jemand anklopft.</p>
</blockquote>
<p>Genau, erst non-blocking machen, und dann zur Sicherheit noch mal select fragen, das ist ein Plan. <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>@threads Das hat dann aber nichts mehr mit I/O Performance zu tun.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2216397</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2216397</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Mon, 28 May 2012 16:31:09 GMT</pubDate></item><item><title><![CDATA[Reply to Serverprogrammierung - Theorie? on Mon, 28 May 2012 16:32:35 GMT]]></title><description><![CDATA[<p>Ich kapere den thread kurz mal für eine kleine Frage:</p>
<p>Ich würde gerne einen minichat clienten basteln. Da ich die select variante doof finde, wrde ich gerne threads verwenden.<br />
Würde zwei threads, je einen für recv und send(main aktualisiert nur das chatfenster), verwenden.<br />
Kann ich den erstellten socket an die threads übergeben ohne das Fehler passieren? Laut dem was ich gelesen habe funktioniert direkte Übergabe per Referenz nicht, da sich durch die threads(gebe nur wieder was ich gelesen habe), die Speicheradresse(der socketvariable) ändert(oder ändern kann).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2216398</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2216398</guid><dc:creator><![CDATA[Namenloser324]]></dc:creator><pubDate>Mon, 28 May 2012 16:32:35 GMT</pubDate></item><item><title><![CDATA[Reply to Serverprogrammierung - Theorie? on Mon, 28 May 2012 16:53:54 GMT]]></title><description><![CDATA[<p>Adressen von Variablen ändern sich grundsätzlich niemals, allerdings kann die Variable im anderen Thread zerstört werden, während du noch eine Referenz auf sie hast.<br />
Übergib einfach by value und gut ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2216406</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2216406</guid><dc:creator><![CDATA[Athar]]></dc:creator><pubDate>Mon, 28 May 2012 16:53:54 GMT</pubDate></item><item><title><![CDATA[Reply to Serverprogrammierung - Theorie? on Mon, 28 May 2012 17:10:46 GMT]]></title><description><![CDATA[<p>314159265358979 schrieb:</p>
<blockquote>
<p>Asynchrone Verarbeitung und Threads sind keine orthogonalen Konzepte. Man kann auch beides haben.</p>
</blockquote>
<p>Weil orthogonale Konzepte bildlich auf zwei Dimension liegen, x- und y-Achse, kannst man sie unabhänig von einander steuern. Deine Nutzung macht mir allerdings Kopfschmerzen. <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/2216414</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2216414</guid><dc:creator><![CDATA[Zeus]]></dc:creator><pubDate>Mon, 28 May 2012 17:10:46 GMT</pubDate></item><item><title><![CDATA[Reply to Serverprogrammierung - Theorie? on Mon, 28 May 2012 17:23:47 GMT]]></title><description><![CDATA[<p>Athar schrieb:</p>
<blockquote>
<p>Adressen von Variablen ändern sich grundsätzlich niemals, allerdings kann die Variable im anderen Thread zerstört werden, während du noch eine Referenz auf sie hast.<br />
Übergib einfach by value und gut ist.</p>
</blockquote>
<p>Geht leider bei C Posix nicht(ich weiß hier ist es c++, dachte läuft ähnlich. Zumal ich dachte, dass das dann nicht funktioniert).</p>
<p>Hier das Beispiel das ich meinte:</p>
<p>&quot; This example performs argument passing incorrectly. It passes the address of variable t, which is shared memory space and visible to all threads. As the loop iterates, the value of this memory location changes, possibly before the created threads can access it. &quot;</p>
<p><a href="https://computing.llnl.gov/tutorials/pthreads/#PassingArguments" rel="nofollow">https://computing.llnl.gov/tutorials/pthreads/#PassingArguments</a><br />
Beispiel 3.</p>
<p>Wieso solte sich der Wert des Speicherorts ändern oO</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2216420</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2216420</guid><dc:creator><![CDATA[Namenloser324]]></dc:creator><pubDate>Mon, 28 May 2012 17:23:47 GMT</pubDate></item><item><title><![CDATA[Reply to Serverprogrammierung - Theorie? on Mon, 28 May 2012 17:28:07 GMT]]></title><description><![CDATA[<p>Namenloser324 schrieb:</p>
<blockquote>
<p>Athar schrieb:</p>
<blockquote>
<p>Adressen von Variablen ändern sich grundsätzlich niemals, allerdings kann die Variable im anderen Thread zerstört werden, während du noch eine Referenz auf sie hast.<br />
Übergib einfach by value und gut ist.</p>
</blockquote>
<p>Geht leider bei C Posix nicht(ich weiß hier ist es c++, dachte läuft ähnlich. Zumal ich dachte, dass das dann nicht funktioniert).</p>
<p>Hier das Beispiel das ich meinte:</p>
<p>&quot; This example performs argument passing incorrectly. It passes the address of variable t, which is shared memory space and visible to all threads. As the loop iterates, the value of this memory location changes, possibly before the created threads can access it. &quot;</p>
<p><a href="https://computing.llnl.gov/tutorials/pthreads/#PassingArguments" rel="nofollow">https://computing.llnl.gov/tutorials/pthreads/#PassingArguments</a><br />
Beispiel 3.</p>
<p>Wieso solte sich der Wert des Speicherorts ändern oO</p>
</blockquote>
<p>ACH, lol, die meinen der Wert der an dieser Adresse steht, oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2216423</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2216423</guid><dc:creator><![CDATA[Namenloser324]]></dc:creator><pubDate>Mon, 28 May 2012 17:28:07 GMT</pubDate></item><item><title><![CDATA[Reply to Serverprogrammierung - Theorie? on Mon, 28 May 2012 17:34:53 GMT]]></title><description><![CDATA[<p>Jo.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2216426</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2216426</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Mon, 28 May 2012 17:34:53 GMT</pubDate></item></channel></rss>