C++ netzwerkprogrammierung

hallo,
ich würde gerne eine Netzwerkverbindung (in C++)zwischen zwei PC’s aufbauen.
Ich hatte die idee eine multiplayerspiel zu schreiben.
Ganz simpel man kann sich selbst bewegen und sieht die bewegung vom anderen(alles in der Konsole ohne grafik).
Dafür brauche ich aber eine verbindung, diese muss nur 2 int werte an den anderen PC senden und selber zwei int werte(x und y koordinate)empfangen.
Ich weiß nicht was besser ist ob ich die beiden PC’S direct unterhalten oder ob ich auf einem PC einen Server erstellen soll de alles regelt.

Frage:Wie kann ich einen Verbindung aufauen mit der ich werte übermitteln kann?

fg

spacee

PS:vieleich kennt ihr ein gutes tut.

… oh je, Spacee,
Netzwerke, Slave and Master sowie COM-Objekte ist nicht mein Gebiet und ich kann Dir nicht damit dienen.

Tschüüüß und viel Erfolg bei der Suche nach qualifizierter Hilfe

Gupetit

Hallo,
einen genauen Aufbau kann ich leider in C++ nicht geben, da ich nur in C# programmiere und eher wenig Kenntnisse in C++ habe. Die Sprachen sind zwar fast identisch vom Syntex, aber es gibt doch Unterschiede.

Ich gehe mal davon aus, dass du das .Net Framework benutzen möchtest, was ich auch empfehlen würde.

Weiterhin solltest du einen „Server“ programmieren, welcher jede eingehende Verbindung annimmt und halt über diesen Server alle Daten untereinander austauscht.
Dieses Prinzip ist heute schon Gang und Gebe.

Beim Server benutzt du einen „System.Net.Sockets.NetworkStream“ um deine Daten zu senden und zu empfangen. Das sollte die leichteste Methode sein und sie kann beides (senden/empfangen) von bytearrays.

Am besten guckst du dir das hier mal an:
http://msdn.microsoft.com/de-de/library/system.net.s…

und den Networkstream koppelst du mit einem „System.Net.Sockets.TcpListener“, welcher die eingehenden Verbindungen annehmen kann.

Da guckst du dir am besten das hier an:
http://msdn.microsoft.com/de-de/library/system.net.s…

Das war auch schon das grundprinzip eines Servers.

Das Gegenstück, der Client, ist ähnlich aufgebaut, abgesehen davon, das du einen „System.Net.Sockets.TcpClient“, statt einem „System.Net.Sockets.TcpListener“ benutzt, um eine Verbindung zu beginnen.

Da guckst du dir am besten mal das hier an:
http://msdn.microsoft.com/de-de/library/system.net.s…

Also im Überblick brauchst du am Server folgendes:

  • Networkstream
  • TcpListener

Und beim Client folgendes:

  • Networkstream
  • TcpClient

Den Networkstream und den TcpClient/TcpListener kannst du im übrigen mit „Networkstream = TcpListener/TcpClient.GetStream()“ koppeln.
Und schon kann der TcpListener/TcpClient mit dem Stream arbeiten.

Wie gesagt, am besten guckst du dir mal die drei Sachen aus dem msdn an und probierst mal ein bischen herum.

Wenn du das Grundprinzip gelernt hast und dir der Networkstream nicht wirklich zusagt, dann kannst du dir ja mal einen „eigenen“ Stream fürs Empfangen und Senden von Daten erstellen.

Dies geht auch relativ einfach, sollte aber erst nach dem der Networkstream verstanden wurde benutzt werden.

Dazu guck dir am besten mal die Komponenten „System.IO.BinaryReader“ und „System.IO.BinaryWriter“ an.

http://msdn.microsoft.com/en-us/library/system.io.bi…

http://msdn.microsoft.com/en-us/library/system.io.bi…

Aber wie gesagt, der Einfachkeit halber erstmal mit dem Networkstream der System.Net.Socket-Klasse versuchen.

Tutorials kenne ich leider keine in C++, aber meist bringt das Msdn ja schon fast alles nahe und einen Vorteil vom Msdn ist, dass dort auch wirklich „richtiges Programmieren“ gezeigt wird und nicht ein 0815-Coding, welches viele Lücken lässt.

Ich wünsche viel Spaß und viel Erfolg.
Eltarion

Hallo Space,

mittels Sockets solltest du die prozessübergreifende Kommunikation hinbekommen. Näheres dazu findest du z.B. hier: http://www.alhem.net/Sockets/

VG

Hey,

schau Dir hierzu mal die Winsock-Library von windows an. Auf http://www.winsocketdotnetworkprogramming.com/ gibt es sogar mehrere Tutorials, die das Thema durchleuchten.

Gruß
Maurice

Hey,

im Detail kann ich Dir diese Frage leider auch nicht beantworten, da ich derartiges noch nie gemacht habe.
Es gibt jedoch „Indy“-Komponenten, mit denen Du jegliche Art von Netzwerkverbindungen aufbauen kannst.
Google mal nach C++ und Indy, oder schau mal hier:
www.indyproject.org

Im Netz dürfte es auch genug Beispiele geben zu Netzwerkprogrammierung mit C++ und Indy.

FG

W.Stecher

Danke für deine Antwort,

ich möchte jeoch lieber bei C++ bleiben und nicht auf c# umsteien.
Da ich sonst von anfang an alles neu lernen muss.

Wenn ich jedoch mit c++ nich weiter komme versuche ich es odch mit c++

mfg

spaccee

Guten Morgen, spaccee -

vielen Dank für Ihre Anfrage über „wer-weiß-was“.

Bitte entschuldigen Sie die recht verspätete Antwort !

Leider kann ich die von Ihnen gestellte Frage ohnehin nicht beantworten, weil meine Fachkenntnisse so weit denn doch nicht reichen.

Habe jetzt auch C++ aus meinem Profil rausgenommen, da ich mich in letzter Zeit eigentlich nur noch meinem Foto-Hobby widme und meine Kenntnisse in C++ wohl mittlerweile doch etwas „veraltet“ sind.

Mit freundlichem Gruß - H. Bergmann