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

ERROR

Alter Hase

  • »ERROR« ist der Autor dieses Themas

Beiträge: 417

Wohnort: Paderborn

Beruf: Informatik Student

  • Private Nachricht senden

51

30.07.2014, 17:54

Aber wenn mehrere Clients auf einen Server zugreifen, schicken ja mehrere übern einen Socket Pakete. Dann muss der Server doch wissen von wem jetzt dieses spezielle Paket kommt.

52

30.07.2014, 18:11

Jeder Client kann doch über einen eigenen Socket mit dem Server reden.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

53

30.07.2014, 18:14

Muss er sogar. Jede Verbindung hat ein eigenes Socket.
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]

ERROR

Alter Hase

  • »ERROR« ist der Autor dieses Themas

Beiträge: 417

Wohnort: Paderborn

Beruf: Informatik Student

  • Private Nachricht senden

54

30.07.2014, 18:17

Also jeder der Clients spricht den Server über einen anderen Socket und somit auch anderen Port an?. Da bei mir die Verbindung eher sporadisch ist, am besten mit einem Objekt für einen Client, in diesem Object könnte dann ja auch der Socket sein?

H5::

Treue Seele

Beiträge: 368

Wohnort: Kiel

  • Private Nachricht senden

55

30.07.2014, 18:38

Nein, da ist ein String nicht sinnvoll. Protobuff ist ein Bytestrom und kein String. Wenn es als JSON oder XML serialisiert werden sollte, dann wäre eine Umwandlung des Bytestroms in Base64 sinnvoll und die einzig gangbare Lösung. Ein String wäre da nämlich sehr fatal und nicht Format-konform.

Ich hab mich nicht auf PB bezogen sondern auf eine Serialisierung ansich. Und bezog sich allein auf die Aussage „Ich habe aber öfters gelesen, dass zum String serialisieren am besten sei “ und diese wohl eher im Zusammenhang mit einem Zeichenkettenformat zu finden ist. Und nur meinem Eindruck entsprach. Ich werde doch nicht bald hier im Forum mit bunten Bildchen und Malen nach Zahlen arbeiten müssen um Bezug auf einen Text zwei, drei Kommentare zuvor nehmen zu können.

Und so unverständlich drücke ich mich ja wohl nun auch nicht aus, dass wenn man halbwegs wach ist nicht wenigstens ein bisschen erahnen kann was ich schreibe.

JSON nutzt generell UTF-8 da werde ich ja wohl meine Strings nicht in Base64 encodieren um mal ähnlich sinnvoll zu antworten.

Tut mir Leid, dass ich langsam etwas ungehalten werde, aber ich habe keine Lust jeden Pup… Immer wieder neu formulieren zu müssen. Wäre ich negativ eingestellt würde ich denken, dass hier einige Menschen bewusst missverstehen. Und sollten Zweifel an meinen Aussagen bestehen kann man auch nachfragen. Wäre nett wenn sich beim lesen meiner Antworten wenigstens etwas Mühe gegeben wird, ansonsten ist es wertlos für mich hier weiter Antworten zu geben.

Das war die letzte Textwand die ich so antworten werde. Ich bin nicht so unfähig, dass dieses nein auch nur ansatzweise angebracht wäre. Sollte ich zu persönlich oder angreifend geschrieben haben bitte ich dies zu entschuldigen.
:love: := Go;

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

56

30.07.2014, 18:46

Du wirst einen String aber in in Base64 umwandeln müssen, wenn der String nicht-JSON-konforme Zeichen enthält. Wie etwa "\0" oder ">". Sagte ich das nicht bereits? Du kannst einen binären Datenstrom nicht einfach in einen String umwandeln und ihn JSON übergeben. Das geht eben nicht.

Tut mir Leid, dass ich langsam etwas ungehalten werde, aber ich habe keine Lust jeden Pup… Immer wieder neu formulieren zu müssen. Wäre ich negativ eingestellt würde ich denken, dass hier einige Menschen bewusst missverstehen.
Dito.
Übrigens hatte ich ja offenbar Recht, dass seine String-Umwandlung massive Probleme verursacht hat. Also über was diskutieren wir dann hier überhaupt noch?

Also jeder der Clients spricht den Server über einen anderen Socket und somit auch anderen Port an?. Da bei mir die Verbindung eher sporadisch ist, am besten mit einem Objekt für einen Client, in diesem Object könnte dann ja auch der Socket sein?
Wenn du keine permanente Verbindung, sondern sporadische Verbindungen hast, geht das mit dem Socket offensichtlich nicht, weil die Verbindung immer wieder auf- und abgebaut wird. Da brauchst Du eine Session.
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]

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »BlueCobold« (30.07.2014, 18:52)


ERROR

Alter Hase

  • »ERROR« ist der Autor dieses Themas

Beiträge: 417

Wohnort: Paderborn

Beruf: Informatik Student

  • Private Nachricht senden

57

30.07.2014, 19:02

Okay, vielen Dank dir BlueCobold, bist der Beste :) Hoffe jetzt klappt alles und ihr hört bald in "Projektvorstellungen" von mir :D

H5::

Treue Seele

Beiträge: 368

Wohnort: Kiel

  • Private Nachricht senden

58

30.07.2014, 19:05

Du wirst einen String aber in in Base64 umwandeln müssen, wenn der String nicht-JSON-konforme Zeichen enthält. Wie etwa "\0" oder ">". Sagte ich das nicht bereits? Du kannst einen binären Datenstrom nicht einfach in einen String umwandeln und ihn JSON übergeben. Das geht eben nicht.

Und Escapesequenzen sind da nicht etwas sinnvoller? Ich finde damit zerhaue ich mir nicht ganz so den Vorteil der Menschenlesbarkeit. Gegen die Binärdaten habe ich nichts gesagt.

Es ging nicht darum, dass du nicht Recht hattest, sondern ich mit dachte er habe nur den allgemeinen Tonus falsch ausgelegt und daher der Fehler entstand. Die Aussagen jedoch nicht unbedingt falsch waren.

Aber das war es jetzt auch zu dem Thema von mir.
:love: := Go;

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

59

30.07.2014, 19:21

Du willst JEDES Zeichen escapen, was nicht JSON-konform ist? Du weißt, dass das etwa 90% der Binärdaten sein werden? Für genau sowas wurde Base64 erfunden. Du kannst sogar auf diversen Webseiten das Zeug hin- und her wandeln lassen, wenn Du es lesen können willst.
JSON ist insgesamt nicht für binäre Daten geeignet, genau wie XML. Wenn man sie doch da rein packt, sollte man Base64 nehmen. Die Daten zu escapen ist erstens unnütz, weil es ohnehin eigentlich niemand liest, was da hin und her geht und zweitens bläht es den Datentransfer massiv auf, wenn man alles escaped. Mal ganz davon abgesehen reden wir von PROTOBUF und nicht von JSON. Protobuf ist binär. Fertig aus.
Und überhaupt... wieso sollte man Binärdaten lesbar haben wollen? Das macht gar keinen Sinn. Bei Protobuf schon erst recht keinen.
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

60

30.07.2014, 19:51

Du möchtest mich jetzt aber nicht veralbern oder? Meinst du wirklich mir jetzt erklären zu müssen wann ich Base64 nutze oder Escapesequenzen?

Mal davon ab ich mir echt nur sehr wenig fälle vorstellen kann wo es sinnvoll ist wirklich Binär Daten in einem serialisierten Object zu erhalten. Ein Bild? Da ist doch das Format an sich schon das Serialisierungsformat, das werde ich ja wohl nicht nach JSON und Co. encodieren. Ich gehe schon davon aus, dass man passende Technologien für die jeweiligen Aufgaben einsetzt. Sollte so etwas doch oft vorkommen ist ja wohl etwas bei der Trennung der Daten schief gegangen. Mir fallen da jetzt aber nur ein paar kryptographische Fälle ein, und da sind die Daten eh gängig in base64 codiert.

Bitte spar dir die Energie mir derartige Dinge zu erklären, ich denke selbst wenn mein Ausdrucksvermögen mangelhaft ist, derartige Dinge beherrsche ich doch recht souverän. Trotzdem Danke.

Wäre aber auch wirklich schön wenn wir das jetzt lassen könnten. Ich Zweifel sonst wirklich noch an mir.
:love: := Go;

Werbeanzeige