|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: May 2004
Messaggi: 60
|
JAVA STRINGHE
Ciao a tutti utilizzo i socket ed ho un po di casini perche devo inviare due codici e non so come distinguerli...
qualcuno sa aiutarmi?? allora il mio server riceve queste due stringe per esempio: "0B00000034D4D602" e "Apri" ora la prima e il codice di un ibutton la seconda e un comando... per ora io avevo creato due if: if(str.equals("0B00000034D4D602")){ String IDUtente = "0B00000034D4D602"; String IDPorta = "5B0000018A1B5409"; verificaAccessi(IDUtente, IDPorta); if(str.equals("Apri")){ System.out.println("Ho ricevuto la richiesta di apertura della porta"); ApriPorta(); } solo che strutturato cosi non va bene siccome il giorno in cui avro 200 utenti dovro mettere 200 if fatti cosi: if(str.equals("0B00000034D4D602")){ String IDUtente = "0B00000034D4D602"; String IDPorta = "5B0000018A1B5409"; verificaAccessi(IDUtente, IDPorta); if(str.equals("0E0000008F33A802")){ String IDUtente = "0E0000008F33A802"; String IDPorta = "5B0000018A1B5409"; verificaAccessi(IDUtente, IDPorta); } ....ecc quindi come faccio a far capire al server in modo semplice veloce e sicuro che la stringa fatta cosi:"0E0000008F33A802"(per esempio) e un codice e nn un comando???
__________________
anna182 vivi come se dovessi morire domani, pensa come se non dovessi morire mai!!!
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
|
non puoi far sì che il server non riceva dal client solo una stringa tipo 0B00000034D4D602 o Apri ma anche l'indicazione di cosa significano?
tipo: <utente>0B00000034D4D602</utente> <cmd>Apri</cmd> così facendo nel server puoi discriminare piu' facilemente se si tratta di un comando o dell'id utente. Di porta ne hai solo una? In caso negativo come la associ all'utente? |
|
|
|
|
|
#3 |
|
Member
Iscritto dal: May 2004
Messaggi: 60
|
devo gestire 8 porte...tutte sono identificate da un codice...ma il mio client deve inviare al serer sia il comando che il codice ibutton...pensavo di mettere un prefisso davanti alla stringa ma nn funziona...in che senso <comando></comando>?
__________________
anna182 vivi come se dovessi morire domani, pensa come se non dovessi morire mai!!!
|
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
|
Quote:
nel senso che il client spedisce al server anche una stringa che gli dice cosa contiene quello che gli sta mandando (un comando, un codice, ecc.). Non ho capito una cosa: il client manda al server un nome di un comando e il codice di un utente. Come fai ad associare l'utente alla porta? |
|
|
|
|
|
|
#5 |
|
Member
Iscritto dal: May 2004
Messaggi: 60
|
Allora il mio client legge il codice di un bottone (ogni utente e associato ad un bottone quindi potro avere anche 200 utenti..) quando ha letto il codice lo invia al server. il server effettua un controllo all'interno di un file txt:
(ID PORTA) 5B0000018A1B5409; (ID UTENTE) 0E0000008F33A802;0B00000034D4D602; (Permessi) 255;0; l'utente 1 puo entrare in tutte le porte l'utente2 in nessuna... ora se l'utente ha il permesso di entrare nella porta il server invia true al client altrimenti ivia false. se il client riceve true attiva dei bottoni in un form e l'utente puo aprire la porta o visualizzarne lo stato... se decide di aprire la porta cliccchera sul bottone apri e il server ricevera la stringa apri... qui sta il problema...come faccio a distinguere comando da codice?? per ora faccio una serie di if ma quando saranno 200 utenti e 200 comandi nn posso fare 200 if...
__________________
anna182 vivi come se dovessi morire domani, pensa come se non dovessi morire mai!!!
|
|
|
|
|
|
#6 |
|
Member
Iscritto dal: May 2003
Messaggi: 119
|
Se spedisci oltre alla stringa delle informazioni su cosa contiene la stringa (come diceva kingv) t dovrebbe andare bene, o no?
Altrimenti invece ke spadire stringhe puoi crearti un oggetto serializzato ke contenga nei vari campi tutte le informazioni ke vuoi e spedire qello con 1 writeObject |
|
|
|
|
|
#7 |
|
Member
Iscritto dal: May 2004
Messaggi: 60
|
il problema e che a me andrebbe bene qls soluzione ma con le mie conoscenze scarse di java ho difficolta ad implementarle capisci?? non capisco nulla del codice...
__________________
anna182 vivi come se dovessi morire domani, pensa come se non dovessi morire mai!!!
|
|
|
|
|
|
#8 | |
|
Senior Member
Iscritto dal: Dec 2001
Messaggi: 1385
|
Quote:
sarebbero solo due altre info inviate al server, come ti hanno già suggerito...
__________________
lui è il mio amore: "tesò domani ti regalo un guinzaglio lungo 100 km"
|
|
|
|
|
|
|
#9 | |
|
Senior Member
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
|
Quote:
te l'ho scritto come fare, il client sa se sta mandando un codice o un comando giusto? allora faglielo scrivere a lui così il server non ha difficoltà a capirlo! e' la soluzione piu' semplice. |
|
|
|
|
|
|
#10 |
|
Member
Iscritto dal: May 2004
Messaggi: 60
|
quindi se devo associare il comando ad una variabile ed il codice ad un altra variabile devo fare due funzioni sendToSocket?? visto che la mia ora prende come parametri una stringa (o codice o comando) e li invia al server....
__________________
anna182 vivi come se dovessi morire domani, pensa come se non dovessi morire mai!!!
|
|
|
|
|
|
#11 |
|
Member
Iscritto dal: May 2004
Messaggi: 60
|
quindi se devo associare il comando ad una variabile ed il codice ad un altra variabile devo fare due funzioni sendToSocket?? visto che la mia ora prende come parametri una stringa (o codice o comando) e li invia al server....
__________________
anna182 vivi come se dovessi morire domani, pensa come se non dovessi morire mai!!!
|
|
|
|
|
|
#12 | |
|
Senior Member
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
|
Quote:
vuol dire che chi chiama il metodo sendToSocket (funzione??? si chiamano metodi) lo fara' cosi' nel caso di un codice: obj.sendToSocket("<codice>" + codice + "</codice>"); e cosi' nelk caso di un comando obj.sendToSocket("<cmd>" + comando + "</cmd>"); |
|
|
|
|
|
|
#13 | |
|
Member
Iscritto dal: May 2004
Messaggi: 60
|
Quote:
obj.sendToSocket("<codice>" + codice + "</codice>"); e altrimenti obj.sendToSocket("<cmd>" + comando + "</cmd>"); dopo pero quando il server legge se io gli dico read from socket (codice) capisce?? piccolo problema pero il mio METODO sendToSocket e fatto cosi... public void sendToSocket(Socket socket, String str)throws IOException{ System.out.println("Stringa inviata: " + str); oStream = socket.getOutputStream(); for (i=0; i<str.length();i++){ oStream.write(str.charAt(i)); } oStream.write('\n'); } quindi non gli devo passare la stringa?? oppure ne faccio due uno per il codice e uno per il comando???
__________________
anna182 vivi come se dovessi morire domani, pensa come se non dovessi morire mai!!!
|
|
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: Jul 1999
Città: Torino
Messaggi: 2221
|
Non è sbagliato chiamare funzioni quei metodi che restituiscono qualcosa e procedure i metodi void...
cmq hai pvt. |
|
|
|
|
|
#15 | |
|
Senior Member
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
|
Quote:
chiamalo una sola volta passando una stringa che comprende già sia il dato che il tipo di dato (codice o comando). Per concatenare due stringhe puoi usare l'operatore "+" (guarda nell'esempio due post fa). |
|
|
|
|
|
|
#16 | |
|
Member
Iscritto dal: May 2004
Messaggi: 60
|
Quote:
__________________
anna182 vivi come se dovessi morire domani, pensa come se non dovessi morire mai!!!
|
|
|
|
|
|
|
#17 | |
|
Senior Member
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
|
Quote:
|
|
|
|
|
|
|
#18 | |
|
Member
Iscritto dal: May 2004
Messaggi: 60
|
Quote:
__________________
anna182 vivi come se dovessi morire domani, pensa come se non dovessi morire mai!!!
|
|
|
|
|
|
|
#19 | |
|
Senior Member
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
|
Quote:
|
|
|
|
|
|
|
#20 |
|
Member
Iscritto dal: May 2004
Messaggi: 60
|
per fortuna mi perdoni anche se nn ci capisco una mazza....
__________________
anna182 vivi come se dovessi morire domani, pensa come se non dovessi morire mai!!!
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 11:32.



















