Socketprogrammierung - Tuts funktionieren nicht



  • Hi,
    ich programmiere gerade mein erstes 3D spiels, jetzt wollte ich, nachdem ich das Grundgerüst programmiert habe (Gravitation, Kollision, Steuerung etc.) einen Multiplayer einbauen, google spuckte nach intensiver suche immer wieder
    "(win)sock(s/ets)" aus.
    Diverse Tutorials später (von denen die meisten nicht funktionierten und der Rest nicht in C++ war...) hab ichs dann aufgegeben, die Boardsuche hat immer nur detailprobleme ausgegeben und jetzt hoff ich mal, das mir jmd n einfaches Beispiel in C++ zeigt, es reicht mir n einfacher TCP Server mir passendem client , in dem man einfach nur ein wort verschicken und empfangen kann.

    thx im vorraus

    PS: Nett wäre auch zu erfahren, was denn nun soviel besser an udp als an tcp ist...



  • Das Tutorial hier sollte eigentlich funktionieren: http://c-worker.ch/tuts.php Und zu UDP: daran ist nichts besser/schlechter. Es hat einfach andere Einsatzzwecke und -möglichkeit (siehe UDP Pass Through [oder wie man das schreibt?]).



  • Das bei C-Workers ist doch in C oder? Ist das egal oder wie?



  • die meisten socket librarys sind C

    vielleicht ist boost::asio was für dch: http://www.boost.org/doc/libs/1_36_0/doc/html/boost_asio.html



  • UDP ist etwas schneller (je nach Verbindung und Datenmenge), dafür ist es nicht sicher das alles ankommt.

    UDP eignet sich daher perfekt für das zyklische raushauen von Weltdaten, wo es egal ist, ob mal eine Sendung verlorengeht.



  • Für C++ war vor boost.asio eigentlich die Adaptive Communication Environment (ACE) sehr verbreitet und ist es auch immer noch. Die Doku ist auf jeden Fall besser als bei boost.asio.



  • Was für ein GTK verwendest du denn? Schließlich bietet C++ keine direkten Möglichkeiten zur Darstellung von 3D. Die meisten Toolkits bieten auch Netzwerkunterstützung in irgend einer Form an (zB SDL, Qt).



  • Fellhuhn schrieb:

    Was für ein GTK verwendest du denn? Schließlich bietet C++ keine direkten Möglichkeiten zur Darstellung von 3D. Die meisten Toolkits bieten auch Netzwerkunterstützung in irgend einer Form an (zB SDL, Qt).

    Es ist aber meist eher schlecht, sich darauf festzulegen. Qt bietet zwar wirklich toll viele Sachen, die weit über GUI-Programmierung hinausgehen, aber dafür bindet man sich auch das das Framework. Häufig ist es wirklich besser, die Logik von der GUI zu trennen.



  • Logik hat mE in der Netzwerkübertragung eh nichts verloren. Frühstens eine Ebene höher, und die sollte dann auch nicht mehr abhängig von dem Toolkit sein.



  • Fellhuhn schrieb:

    Logik hat mE in der Netzwerkübertragung eh nichts verloren. Frühstens eine Ebene höher, und die sollte dann auch nicht mehr abhängig von dem Toolkit sein.

    Ich stimme Dir bedingt zu. Aber vielleicht will man ja verschiedene Frontends unterstützen. gtk, Qt und native Windows z.B. Insofern halte ich es nach wie vor für schlecht, die Netzwerkübertragung vom GTK abhängig zu machen, weil das ebenfalls nichts miteinander zu tun hat.



  • So, die Hälfte der Beiträge hab ich verstanden, die andere Hälfte nicht.
    Zur Erklärung:
    Ich programmiere mit VC++ (Microsoft) ein einfaches 3D-Spiel mit der Engine Genesis3D (uralt ich weiß aber ich hab n Buch drüber daheim liegen, deswegen fang ich damit an) später sollte vllt mal n MP rein.
    Jetzt such ich n Tut wie ich mit C++ n einfachen Server-Client-VErbund
    progge (übertragung eines wortes/zeichenkette) oder einen Weg C in ein C++ Prog einzubinden.

    thx an alle die mir helfen wollen.


Anmelden zum Antworten