Gestire il testo non valido sul server o correggere sul client nell'applicazione Client-Server

0

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):

  1. 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
  2. Il server gestisce una varietà di opzioni in questo caso
  3. 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
posta dreza 16.02.2013 - 20:36
fonte

1 risposta

1

Quindi la domanda è: dovresti cambiare il protocollo per essere più flessibile (permettendo variazioni del formato), o i clienti dovrebbero aderire a ciò che hai attualmente?

Non penso che ci sia una soluzione adatta a tutte le dimensioni qui, la risposta è totalmente alle parti coinvolte per negoziare. Tutti devono essere d'accordo sul protocollo (quello attuale o qualcosa di più flessibile), e quindi tutte le applicazioni client devono implementarlo correttamente altrimenti non possono aspettarsi che il server gestisca bene le richieste malformate.

Detto questo, sembra ragionevole aspettarsi che i client implementino il formato -37.6543 invece di utilizzare il riempimento di byte come -37^-6543 . Penso che il client dovrebbe gestirlo e dovresti mantenere il tuo protocollo corrente.

    
risposta data 16.02.2013 - 23:20
fonte

Leggi altre domande sui tag