JSON Objekt über TCP auf Linux empfangen



  • Hey servus!

    ich hoffe, der Bereich ist der Richtige!

    Also folgendes:
    Ich würde gerne eine kleine Client/Server-Applikation schreiben, die erst mal in der Lage sein soll, JSON_Objekte auszutauschen.

    Der Client wird vorraussichtlich in C# auf einem Rechner laufen, der Server läuft auf einem Embedded Linux unter C.

    Ich wollte zuerst mit dem Server in C beginnen, doch momentan habe ich massive Probleme einen "Anfang" zu finden, also überhaupt in die Materie einzusteigen.

    (implementiert ist momentan eine Server/Client Applikation, die Strings austauschen kann. Server und Client, beide in C)

    Habt ihr vlt Links/Erklärungen für mich parat, um mir den Absprung zu ermöglichen?

    Vielen Dank und mit besten Grüßen

    Armin



  • Armin_S schrieb:

    (implementiert ist momentan eine Server/Client Applikation, die Strings austauschen kann. Server und Client, beide in C)

    Was ist denn der Unterschied zwischen "JSON" und einem "String" bei dir?



  • Servus,

    stimmt schon, kein großer Unterschied.
    ich würde JSON als "strukturierten String" bezeichnen.
    In wie fern spielt das eine Rolle?

    Ich gebs gerne zu, von Netzwerk-Programmierung hab ich ziemlich wenig Ahnung, aber die Informationen als "losen" String zu verschicken, scheint mir irgendwie nicht so ganz optimal, aber ich lasse mich natürlich auch gerne eines Besseren belerehn 😉

    Grüße



  • Der Thread gehört eigentlich eher hierhin ... egal.

    Welche Ironie, dass heute in der Artikel-Sektion ein Artikel mit so einem Thema gepusht wurde.
    Unter Linux, wo der Server laufen soll, sind dann zwar die Header anders, aber dafür hast du man . Ohne Witz, einen guten Teil Netzwerkprogrammierung kannst du dir auch mit:

    man 7 ip
    man 7 tcp
    man 3 socket
    man [Nummer] [Funktion aus den bereits genannten Manpages]
    

    beibringen. Es wird zwar nicht alles behandelt, was man wissen muss, aber so die groben Züge.

    Wenn du einen C-Parser für JSON haben willst: schaust du hier.
    Gut gemeinter Ratschlag: lass es erst mal bleiben. Bis du Socketprogrammierung richtig verstanden hast, vergeht erst einmal eine Weile, und die Implementierung eines Basisservers hat für dich erst mal Vorrang.

    Kleine Offtopic-Frage, weil mich das schon beschäftigt: In dem Artikel steht folgendes:

    Jodocus schrieb:

    Die Funktionen der Overlapped I/O nutzen die der API übergebenen Puffer zum Senden und Empfangen im Kernel-Mode und zugleich im User-Mode, sodass sie nicht hin und her kopiert werden müssen. Es wird quasi das alloziierte Array direkt an die Netzwerkkarte weitergereicht, wodurch die Overlapped-Funktionen signifikant schneller sind als z.B. send() oder recv().

    Gibt es dazu auch ein Linux-Äquivalent? Notfalls würde ich die Speicherblöcke, die ich reserviere, auch auf 4096 Bytes alignen oder mit mmap Speicher anfordern, damit sichergestellt ist, dass der Kernel mir in die reservierten Pages schreibt oder davon liest, ohne beim Call wieder Sachen rein- und rauszukopieren.


Anmelden zum Antworten