Scambio di dati con C

0

Sto sviluppando un sistema in cui un server TCP codificato in C sta ascoltando nuove connessioni dai client, in fase di analisi analizzano i dati e l'amp; archivia nel database.

Ho familiarità con JSON e mi piacerebbe usarlo come scambio di dati intere tra client e amp; server. Il mio problema qui è la complessità aggiuntiva di parsing json usando C, nel contesto di usare un linguaggio dinamico come php o java.

Prima di iniziare ad avventurarmi nelle intestazioni / librerie JSON (attualmente sto guardando json-c), ho pensato fosse meglio verificare con la community se JSON fosse una scelta ragionevole di formato per questo scopo? Ho lavorato solo con interscambi di dati con linguaggi di livello superiore, quindi la facilità di parsing è sempre stata data per scontata.

    
posta Simon. 11.02.2015 - 13:29
fonte

3 risposte

1

L'analisi di blocchi da uno stream di solito è un problema.

Uno dei problemi è che spesso è necessario conoscere la dimensione del pacchetto per allocare il buffer necessario a tenerlo durante l'analisi. La maggior parte dei formati basati su testo non ha che invece sono delimitati da un set speciale di caratteri (JSON è la parentesi graffa / parentesi di chiusura).

Se si sceglie una trasmissione binaria, suggerisco un'intestazione fissa con dimensioni e un intero che indica quale messaggio è.

    
risposta data 11.02.2015 - 14:18
fonte
0

Non capisco perché no, il suo juts è un altro formato che devi gestire, e ce ne sono già migliaia in natura. Almeno JSON è un formato noto.

Un rapido google dice libjso , cJSON e NxJSON sono disponibili come librerie per aiutare ad analizzare e gestire i tuoi payload di dati, quindi non ci dovrebbe essere molto problema con la complessità di analizzarlo, non più di XML o di testo, per esempio.

Una cosa che suggerirei è di usare un server web incorporato invece di un semplice socket, se usi JSON, potrei supporre che potresti volere dei client web in futuro (dato che ce ne sono molti tra cui scegliere e loro " è davvero semplice da aggiungere al tuo progetto)

    
risposta data 11.02.2015 - 14:10
fonte
0

Esistono anche altre librerie utilizzate per lo scambio di dati, ad es. protobuf o MessagePack . Queste librerie possono adattarsi meglio alle tue esigenze, a seconda dei dati che prevedi di scambiare

    
risposta data 11.02.2015 - 15:30
fonte

Leggi altre domande sui tag