Ho sviluppato un protocollo per un'applicazione Client-Server e l'ho sviluppato in collaborazione con un altro sviluppatore. L'applicazione client in questo momento è scritta per il cellulare.
Il protocollo utilizza campi separati da virgola con deliminatori di inizio e fine. Poiché alcuni dei nostri campi sono in formato ASCII libero, stiamo inserendo byte nei campi in modo che i caratteri speciali possano essere gestiti all'interno e non rovinino la nostra analisi dei dati.
Il problema è che un campo è stato riempito di byte quando non avrebbe dovuto essere. Il campo in questione doveva rappresentare le coordinate, cioè
<rest of data packet>, <lat>,<lng>,....
where
<lat>: Latitude coordiantes i.e. -37.6543
<lng>: Longtitude i.e. 90.8993
Tuttavia ciò che abbiamo ricevuto sul server era il carattere di byte riempito per una virgola che appare nel campo punto , cioè -37 ^ -6543. Ciò a sua volta ha causato il server per ignorare il pacchetto e non registrare i dettagli.
Motivo : Quando ho detto questo allo sviluppatore del telefono, ha detto che era perché le impostazioni dei caratteri sul telefono significavano che l'utente aveva cambiato il punto in una virgola. Era sua convinzione che dovremmo gestirlo sul server. Comunque non sono sicuro. Ho il sospetto che i client debbano seguire il protocollo poiché in teoria potrebbero esserci client diversi che si connettono e il server non vuole avere casi speciali disseminati nella sua base di codice?
Domanda : Quindi alcune opzioni che vedo sono (e non sono sicuro di come affrontarlo):
- Ottieni tutti i client per inviare i dati come da specifiche del protocollo e mantenere il formato dei dati in bianco e nero per così dire
- Il server gestisce una varietà di opzioni in questo caso
- Insieme a 2 regola il documento del protocollo in modo che i dati siano più flessibili in alcuni casi e il server è responsabile della gestione dei diversi casi