CERCA
PER MODELLO
FullScreen Chatbox! :)

Utente del giorno: kalel77 con ben 79 Thanks ricevuti nelle ultime 24 ore
Utente della settimana: startrek con ben 104 Thanks ricevuti negli ultimi sette giorni
Utente del mese: ste22032 con ben 448 Thanks ricevuti nell'ultimo mese

Pagina 1 di 4 123 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 39
Discussione:

Comunicazione client-server

  1. #1
    Baby Droid
    Registrato dal
    Nov 2012
    Località
    Valderice
    Messaggi
    24
    Thanks
    5
    Thanked 0 Times in 0 Posts
    Predefinito

    Comunicazione client-server

    Salve a tutti, sono un programmatore android novellino e sto creando un app.
    La mia app crea un carrello di spesa virtuale, in pratica facendo la scansione del codice a barre (tramite la libreria open source ZXing) questa mi da in output il prodotto che è scansionato e il prezzo che viene aggiunto al carrello.
    Ora il mio problema quale è???
    Quello che devo fare ora è, simulare un server sul pc contenente la tabella (barcode-prezzo prodotto) che risponde alle richieste di uno o più client (android).
    Mi è stato suggerito di utilizzare le socket tcp ma non ho idea di come implementare il tutto sia lato server che lato client.
    Spero di esser stato chiaro. Grazie a tutti per l'aiuto!

  2.  
  3. #2
    Baby Droid
    Registrato dal
    Nov 2012
    Località
    Valderice
    Messaggi
    24
    Thanks
    5
    Thanked 0 Times in 0 Posts
    Predefinito

    non c'è nessuno che mi può aiutare???

  4. #3
    Moderatore L'avatar di frank17next
    Registrato dal
    Jan 2010
    Località
    Campobasso
    Messaggi
    737
    Smartphone
    GNexus, Galaxy Note, GT 10.1
    Thanks
    16
    Thanked 142 Times in 102 Posts
    Predefinito

    Ksoap2 lato client e web service java/ .net lato server come la vedi?

    Inviato dal mio Galaxy Nexus con Tapatalk 2
    Nexus 4 - [JB] 4.2.2 Stock + Root
    Galaxy Tab 10.1 Slim P7500 - [JB] CyanogenMod 10 4.1.2 Pershoot (Nightly 20121013)
    Galaxy Note GT-N7000 - [JB] 4.1.2 Stock Root
    Nexus One [GB] - HyperSense Nova
    ------------------------------------------------------------------------
    https://sites.google.com/site/frank17next/

  5. #4
    Baby Droid
    Registrato dal
    Nov 2012
    Località
    Valderice
    Messaggi
    24
    Thanks
    5
    Thanked 0 Times in 0 Posts
    Predefinito

    scusa l'ignoranza ma non so cosa sia ksoap2...siccome questa app è a scopo didattico, mi è stato chiesto di simulare la connessione al server (computer) che dovrebbe contenere la tabella tramite socket tcp. ho trovato qualche esempio sulla rete ma non ho capito di preciso come collegare il tutto!

  6. #5
    Moderatore L'avatar di frank17next
    Registrato dal
    Jan 2010
    Località
    Campobasso
    Messaggi
    737
    Smartphone
    GNexus, Galaxy Note, GT 10.1
    Thanks
    16
    Thanked 142 Times in 102 Posts
    Predefinito

    Beh, non è proprio una simulazione allora
    Ksoap2 è un'ottima implementazione per android per eseguire delle chiamate Soap verso un web service (ideale per piccoli scambi di dati tra 1 server e uno smart-device)
    Fammi capire, il server deve esporre dei dati (che dati?) online affinché un client possa gettarli?
    - il server cosa deve essere (un web service, un sito, un FTP, ...) devi creare 'questa cosa' lato server?
    - il client è un device android? Devi creare il software lato client?
    Se sei nella fase di design è necessario prima che tu consideri tutti i casi d'uso del tuo futuro software in modo che poi tu possa eseguire delle scelte su cosa realizzare.


    Inviato dal mio Galaxy Nexus con Tapatalk 2
    Nexus 4 - [JB] 4.2.2 Stock + Root
    Galaxy Tab 10.1 Slim P7500 - [JB] CyanogenMod 10 4.1.2 Pershoot (Nightly 20121013)
    Galaxy Note GT-N7000 - [JB] 4.1.2 Stock Root
    Nexus One [GB] - HyperSense Nova
    ------------------------------------------------------------------------
    https://sites.google.com/site/frank17next/

  7. #6
    Baby Droid
    Registrato dal
    Nov 2012
    Località
    Valderice
    Messaggi
    24
    Thanks
    5
    Thanked 0 Times in 0 Posts
    Predefinito

    Cerco di spiegarmi meglio.
    Tramite il simulatore sto facendo un app per android, a questo punto dello sviluppo quello che mi interessa fare è comunicare con un server per ricevere dei dati.
    In particolare, devo stabilire una connessione con un server a cui il device android invia un codice a barre e quindi ricevere in risposta il nome del prodotto (a cui si riferisce il codice a barre) ed il prezzo del prodotto stesso. Queste informazioni ricevute vengono conservate nel device ed elaborate in seguito.
    Quindi devo implementare il client sul device e il server sul computer, in modo da poter fare la simulazione e verificare che tutto funziona.
    Mi hanno consigliato di creare il server sul pc in java ed utilizzare una connessione tcp.
    Comunque sono aperto a consigli perchè non ho la minima idea di come implementare tutto sto casino!
    Spero almeno di esser stato chiaro

  8. #7
    Moderatore L'avatar di frank17next
    Registrato dal
    Jan 2010
    Località
    Campobasso
    Messaggi
    737
    Smartphone
    GNexus, Galaxy Note, GT 10.1
    Thanks
    16
    Thanked 142 Times in 102 Posts
    Predefinito

    Quote Originariamente inviato da xyzi Visualizza il messaggio
    Cerco di spiegarmi meglio.
    Tramite il simulatore sto facendo un app per android, a questo punto dello sviluppo quello che mi interessa fare è comunicare con un server per ricevere dei dati.
    In particolare, devo stabilire una connessione con un server a cui il device android invia un codice a barre e quindi ricevere in risposta il nome del prodotto (a cui si riferisce il codice a barre) ed il prezzo del prodotto stesso. Queste informazioni ricevute vengono conservate nel device ed elaborate in seguito.
    Quindi devo implementare il client sul device e il server sul computer, in modo da poter fare la simulazione e verificare che tutto funziona.
    Mi hanno consigliato di creare il server sul pc in java ed utilizzare una connessione tcp.
    Comunque sono aperto a consigli perchè non ho la minima idea di come implementare tutto sto casino!
    Spero almeno di esser stato chiaro
    Ok,
    se devi comunicare in questi termini ( con invio dati e ricezione dati post-elaborati) non mi viene in mente altro che un webservices.
    Per avere idea su cosa è un webservice dai un occhio a questo: CodiceFiscale Web Service
    è una banalità: accetta in input dei dati dall'utente e restituisce il codice fiscale.
    Tu dovrai realizzare una cosa del genere: invii il codice ean dal terminale android letto con la fotocamera (immagino avrai implementato le librerie di zxing zxing - Multi-format 1D/2D barcode image processing library with clients for Android, Java - Google Project Hosting) e il server (il webservice) riceve la stringa in ingresso e restituisce il prodotto corrispondente.
    La libreria KSOAP2 per Android è l'ideale per scambi di questo tipo ed è gratuita: kSOAP 2
    Ti scrivo un esempio (con qualche commento) in Java che può meglio descrivere come poter utilizzare un webservice su Android:

    codice:
    public String WebServiceRestituisciProdottoDaEan(String pEan) throws Exception {
    	Object result = null;
    	String risultato = "";
    	String SOAP_ACTION = "http://tuowebservice/trovaProdottoDaEan";
    	String METHOD_NAME = "trovaProdottoDaEan";
    	String NAMESPACE = "http://tuowebservice/";	
    	String URL = "http://tuoserver:8000" + "/GestioneEan/ilmiowebservice.asmx";
    	int timeout = 5000; //5 secondi di timeout
    	
    	objTestNull = null;
    			SoapObject richiesta = new SoapObject(NAMESPACE, METHOD_NAME);
    			SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER10);
    			envelope.setOutputSoapObject(richiesta);
    			envelope.dotNet = true;				
    			richiesta.addProperty("eanDaLeggere", pEan); // 'eanDaLeggere' è una proprietà -un nome fisso- prestabilito nel webservice				
    			//Eseguo chiamata SOAP
    			HttpTransportSE androidHttpTransport = new HttpTransportSE(URL, timeout);
    			androidHttpTransport.debug = true;
    				try {
    						androidHttpTransport.call(SOAP_ACTION, envelope);
    						objTestNull = envelope.bodyIn; //***
    				} catch (IOException e) { 
    		
    					e.printStackTrace(); //***
    					envelope = null;
    					
    				} catch (XmlPullParserException e) {
    					e.printStackTrace(); //*** 
    					envelope = null;
    				}
    				//Inizio tentativo get del risultato:
    				try {
    					if (envelope!= null){ //***
    						if (objTestNull!=null){
    							result = envelope.getResponse(); //il risultato del webservice è memorizzato in un oggetto generico
    							objTestNull = null;
    							if (result != null){
    								risultato = result.toString();						
    							}
    					} else {
    						if (envelope == null){
    							//errore: oggetto envelope null
    						}
    					}
    				} catch (SoapFault e) {				
    					e.printStackTrace();
    				}		
    	}
    	return risultato; //questo è il risultato ritornato (Stringa) dei dati del prodotto trovato dall'ean aggiunto in richiesta.addProperty("eanDaLeggere", pEan);
    }
    Fondamentalmente il WebService http://tuowebservice/trovaProdottoDaEan viene chiamato dal terminale Android con una chiamata SOAP che contiene (Propriety) la stringa che rappresenta il tuo codice Ean. A quel punto il WebServer, che presumibilmente avrà alle spalle un database, ricercherà la stringa ean e restituirà (previo risoluzione del match ean/articolo) i dati dell'articolo.
    (Per farti capire, il metodo .addProperty("Nome Parametro", valore) dell'oggetto SoapObject serve per passare programmaticamente i valori che inseriresti a mano nel browser sull'esempio del codicefiscale)

    A quel punto puoi usare la stringa 'risultato' sul terminale Android come preferisci.

    Se usi windows ti consiglio di installare VisualStudio e iniziare a creare dei webservice di prova. Questi WebService saranno poi pubblicati su un webserver IIS (nativamente supportato in windows) e quindi raggiungibili dall'esterno (vedi nel codice SOAP_ACTION, ecc... oppure l'esempio del codice fiscale)
    Se usi Linux ti consiglio di installare Eclipse e un qualsiasi webserver a piacimento supportato (Apache Tomcat) e il concetto rimane lo stesso.

    Cmq, se posso esprimerti un mio modesto parere, ti hanno fatto iniziare con il botto. Non è difficile ma se sei alle prime armi è comunque una realizzazione complessa, richiederà diverse settimane di lavoro.
    Ultima modifica di frank17next; 22-01-13 a 21:28 Motivo: correzione ortografica
    Nexus 4 - [JB] 4.2.2 Stock + Root
    Galaxy Tab 10.1 Slim P7500 - [JB] CyanogenMod 10 4.1.2 Pershoot (Nightly 20121013)
    Galaxy Note GT-N7000 - [JB] 4.1.2 Stock Root
    Nexus One [GB] - HyperSense Nova
    ------------------------------------------------------------------------
    https://sites.google.com/site/frank17next/

  9. Il seguente Utente ha ringraziato frank17next per il post:

    xyzi (25-01-13)

  10. #8
    Baby Droid
    Registrato dal
    Nov 2012
    Località
    Valderice
    Messaggi
    24
    Thanks
    5
    Thanked 0 Times in 0 Posts
    Predefinito

    Innanzitutto di ringrazio della spiegazione e dell'esempio!
    Ma secondo te potrei usare il programma XAMPP per simulare il webserver?
    Io ho già usato questo programma per simulare un sito in locale, pensi che si possa usare anche in questa occasione?

  11. #9
    Baby Droid
    Registrato dal
    Nov 2012
    Località
    Valderice
    Messaggi
    24
    Thanks
    5
    Thanked 0 Times in 0 Posts
    Predefinito

    mi hai abbandonato oppure ho scritto una fesseria colossale???

  12. #10
    Moderatore L'avatar di frank17next
    Registrato dal
    Jan 2010
    Località
    Campobasso
    Messaggi
    737
    Smartphone
    GNexus, Galaxy Note, GT 10.1
    Thanks
    16
    Thanked 142 Times in 102 Posts
    Predefinito

    Scusami, sono stato tremendamente sommerso a lavoro e non mi sono connesso al forum


    La soluzione che proponi non l'ho mai testata ma mi è parso di capire che una suite di software se presente anche un web server va benissimo
    Inviato dal mio Galaxy Nexus con Tapatalk 2
    Nexus 4 - [JB] 4.2.2 Stock + Root
    Galaxy Tab 10.1 Slim P7500 - [JB] CyanogenMod 10 4.1.2 Pershoot (Nightly 20121013)
    Galaxy Note GT-N7000 - [JB] 4.1.2 Stock Root
    Nexus One [GB] - HyperSense Nova
    ------------------------------------------------------------------------
    https://sites.google.com/site/frank17next/

Pagina 1 di 4 123 ... ultimoultimo

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •