Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

birdfreeyahoo

Alter Hase

Beiträge: 756

Wohnort: Schorndorf

Beruf: Junior Software Engineer

  • Private Nachricht senden

11

06.07.2014, 05:11

Sieht aus als hättest du vergessen eine lib zu linken oder diverse Methoden zu implementieren.

H5::

Treue Seele

Beiträge: 368

Wohnort: Kiel

  • Private Nachricht senden

12

06.07.2014, 06:56

Hast du die durch protoc generierten .pb.h UND .pb.cc zu deinem Projekt hinzugefügt (Header alleine reicht nicht) bzw. compiliert VS die .pb.cc auch wenn sie im Projekt vorhanden ist?

Zudem brauchst du nur die libprotobuf.lib oder die libprotobuf-lite.lib.

Also nichts gegen Protobuff, im Gegenteil. Nur für die Aufgabe die du beschriebest hast du dir damit ein ganz schönes Monster eingefangen was die Serialisierungsaufgabe angeht. Nur als Tipp, werfe noch mal einen kurzen Blick auf msgpack, dies ist deutlich schlanker.
:love: := Go;

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »H5::« (06.07.2014, 07:02)


ERROR

Alter Hase

  • »ERROR« ist der Autor dieses Themas

Beiträge: 417

Wohnort: Paderborn

Beruf: Informatik Student

  • Private Nachricht senden

13

06.07.2014, 10:07

H5:: sein Tipp war der richtige, die .pb.cc hat gefehlt :)

Jetzt funktioniert endlich alles. Vielen Vielen Dank euch allen :thumbup:

Ich werde erstmal versuchen mit Protobuf klar zu kommen für mein Projekt, notfalls werde ich wechseln ;)

ERROR

Alter Hase

  • »ERROR« ist der Autor dieses Themas

Beiträge: 417

Wohnort: Paderborn

Beruf: Informatik Student

  • Private Nachricht senden

14

07.07.2014, 18:46

So, ich habe jetzt einen funktionieren Client und einen funktionierenden Server. Natürlich nur in sehr kleinen Test Varianten.

Habe nun eine Frage zum Aufbau:
Ich würde es so aufbauen, dass es zwei Arten von Protobuf Messages gibt. 1) sagt aus was der Client grade machen möchte oder der Server antwortet 2) einfach die Datensätze.
Der Client würde also erstmal eine Message vom Typ1 senden, welche aussagt, dass er sich einloggen möchte und anschliessend eine mit Name und PW. Akzeptiert der Server diese, kann der Client wieder Messages vom Typ 1 schicken, beispielsweise um zu sagen er möchte in Tabele x eintragen, akzeptiert der Server muss der Client nun eine Message Typ 2 mit dem Datensatz y schicken, welchen der Server dann verarbeitet.

Ich stelle mir das ganze wie eine virtuelle Menüführung vor, also dass immer nur bestimmte Messages akzeptiert werden und alles andere verworfen wird.

Ist meine Herangehensweise richtig so?

H5::

Treue Seele

Beiträge: 368

Wohnort: Kiel

  • Private Nachricht senden

15

07.07.2014, 19:54

Wenn dieses vorgehen deinem Anspruch an die Kommunikation ausreicht, würde ich es erst einmal so versuchen.(Edit: siehe unten.) Wichtig ist einfach, dass du dir gut überlegst welche Anforderungen du später hast. Z.B. ob du Nebenläufigkeit benötigst usw. Ein richtiges Vorgehen ist ohne genaue Spezifikation sehr schwer zu finden.

Du kannst dir ja mal ein paar Dokumente ansehen. Eventuell hilft dir dies ja weiter.

Object-Oriented Network Programming with C++
ØMQ - The Guide (Bezieht sich eher auf die ZeroMQ ebene, enthält aber auch so viele Informationen.)
:love: := Go;

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »H5::« (07.07.2014, 20:25)


BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

16

07.07.2014, 20:12

Ich rate GANZ STARK davon ab zwei Nachrichten zu schicken. Schick eine, die eine Message-ID trägt und gleichzeitig die Daten als Inhalt trägt. Ein zwei-Stufen-Protokoll, wo erst angekündigt wird, was als zweite Nachricht folgt, führt nur zu Problemen. Zu diversen Problemen!
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

H5::

Treue Seele

Beiträge: 368

Wohnort: Kiel

  • Private Nachricht senden

17

07.07.2014, 20:22

Ha, dass hab ich ja gar nicht gesehen. Hatte einfach nur ein Request Response Muster gesehen ohne diese Vorankündigung. Da revidiere ich meine Antwort soweit bis BlueCobolds gilt.
:love: := Go;

ERROR

Alter Hase

  • »ERROR« ist der Autor dieses Themas

Beiträge: 417

Wohnort: Paderborn

Beruf: Informatik Student

  • Private Nachricht senden

18

07.07.2014, 22:38

Okay, dann werde ich nur eine Nachricht benutzen.
Geht folgendes? :Jede Message ist eine protobuf message, welche die beiden werte id und string hat (wie BlueCobold sagte). Kann ich dort dann den String mit einer anderen Protobuf Message befüllen? Also dass der String einen Datensatz(zB Person aus dem Tutorial) als Protobuf Message wieder spiegelt?

Tobiking

1x Rätselkönig

  • Private Nachricht senden

19

08.07.2014, 04:37

Du kannst ProtoBuf Nachrichten direkt verschachtelt definieren. Definier dir einen message header als Nachricht und in allen anderen Nachrichten kannst du die Datei includen und als Typ verwenden.

ERROR

Alter Hase

  • »ERROR« ist der Autor dieses Themas

Beiträge: 417

Wohnort: Paderborn

Beruf: Informatik Student

  • Private Nachricht senden

20

14.07.2014, 18:19

Wie genau meinst du das Tobiking?
Kann da jemand ein Beispiel posten?

Werbeanzeige