salve, dovrei realizzare una classe java darichaimare poi dove occorrre che mi permetta di definre i metodi :
sconenttiscket,connettisocket,invia e ricevi.
qualcuno può aiutarmi??grazie mille
salve, dovrei realizzare una classe java darichaimare poi dove occorrre che mi permetta di definre i metodi :
sconenttiscket,connettisocket,invia e ricevi.
qualcuno può aiutarmi??grazie mille
Così è un po' troppo vaga come richiesta. Innanzitutto parli di socket su TCP, vero? Poi devi inviare e ricevere che cosa di preciso?? Tieni presente che un socket su TCP è una connessione permanente tra 2 host (fino a che uno dei due chiude la connessione) e su cui viaggiano solamente dei byte "crudi". Sei poi tu che fai quello che si chiama "wrapping" (o "chaining") degli stream per poter inviare dei dati in un formato a te comodo.Originariamente inviato da gattamelogna
salve, dovrei realizzare una classe java darichaimare poi dove occorrre che mi permetta di definre i metodi :
sconenttiscket,connettisocket,invia e ricevi.
qualcuno può aiutarmi??grazie mille
Ad esempio l'OutputStream fornito dal socket lo puoi usare per creare un DataOutputStream al fine di scrivere sul socket dei dati primitivi in modo portabile.
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
ciao andrea,
meno male ci sei tu!!cmq mi hanno detto di fare una classe che contenga tutti i metodi ad esempio socketconnessione che avrà in input ip, porta ed una varibile booleana che se è impostata a false allora bisogna scrivere sul socket, in caso contrario bisogna leggere.
adesso il metodo l'ho fatto ma non so se ha la giusta logica per poter funzionare se vuoi lo posto.
Grazie mille
Come ho detto bisogna vedere cosa devi leggere e scrivere. Singoli byte? Stringhe? Altro?Originariamente inviato da gattamelogna
mi hanno detto di fare una classe che contenga tutti i metodi ad esempio socketconnessione che avrà in input ip, porta ed una varibile booleana che se è impostata a false allora bisogna scrivere sul socket, in caso contrario bisogna leggere.
Beh, postalo pure, così vediamo.Originariamente inviato da gattamelogna
adesso il metodo l'ho fatto ma non so se ha la giusta logica per poter funzionare se vuoi lo posto.
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
scusa prima non ho specificato che devo leggere e scrivere delle stringhe .
cmq il metodo non so se è corretto è questo:codice:public void connect(String ip, int porta, boolean lettura){ if(lettura=false){ try{ socket=new Socket("ip",porta); os=new DataOutputStream(socket.getOutputStream()); while(lettura==false){ try{ Thread.sleep(1000); }catch(InterruptedException ex){ System.out.println("Eccezione del thread "+ex); } } } catch(IOException e){ System.out.print("Eccezione "+ e); } } else{ try{ socket=new Socket("ip",porta); is=new DataInputStream(socket.getInputStream()); }catch(IOException e){System.out.println("Eccezione socket "+e);} } }
No, non mi sembra molto corretto. Già nel test if(lettura=false) hai messo una assegnazione (che, nota bene, tecnicamente compila ma non è quello che ti serve). Poi perché passi "ip" al Socket?? E perché fai un Thread.sleep(1000)??Originariamente inviato da gattamelogna
scusa prima non ho specificato che devo leggere e scrivere delle stringhe .
cmq il metodo non so se è corretto
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
Ma per Java non esistono frameworks ad alto livello che evitano questo lavoraccio?
Rilasciata Python FTP Server library 0.5.1
http://code.google.com/p/pyftpdlib/
We'll be those who'll make the italian folks know how difficult can be defecating in Southern California without having the crap flying all around the house.
ho messo lettura=false,(ok dovevo mettere lettura==false) perchè se è così vuol dire che mi serve un socket che scrive e che quindi utilizza lo stream di output in caso contrario un socket che legge e che quindi utilizza lo stream di input. sul fatto che passo ip non capisco perchè non va bene![]()
A parte il fatto che se vuoi leggere .... la stringa come la restituisci se hai messo void come tipo di ritorno???Originariamente inviato da gattamelogna
ho messo lettura=false,(ok dovevo mettere lettura==false) perchè se è così vuol dire che mi serve un socket che scrive e che quindi utilizza lo stream di output in caso contrario un socket che legge e che quindi utilizza lo stream di input.
Hai passato nel costruttore la stringa "ip", non ip (che comunque in generale contiene un host).Originariamente inviato da gattamelogna
sul fatto che passo ip non capisco perchè non va bene![]()
Se proprio si volesse fare una classe per I/O di stringhe su socket, si potrebbe fare una cosa del genere:
(non l'ho provata)codice:class StringSocketIO { private Socket sock; private DataInputStream dis; private DataOutputStream dos; public StringSocketIO (String host, int port) throws UnknownHostException, IOException { sock = new Socket (host, port); dis = new DataInputStream (sock.getInputStream()); dos = new DataOutputStream (sock.getOutputStream()); } public String read () throws IOException, EOFException { return dis.readUTF (); } public void write (String str) throws IOException { dos.writeUTF (str); } public void close () { try { if (dis != null) dis.close (); } catch (IOException ioe) { } try { if (dos != null) dos.close (); } catch (IOException ioe) { } try { if (sock != null) sock.close (); } catch (IOException ioe) { } } }
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
ok, mi trovocon il tuo ragionamento. acneh io ho i metodi per leggere , scrivere e chiudere il socket ieri ho postato solo quello della connessione perchè mi sembrava non andasse bene a livello logico.
adesso il mio metodo scrivi è uguale al tuo se non fosse per i nomi asseganti alle variabile output stream, in questo caso se richiamo sull'oggetto StringSocketIO prima il metodo chemi apre la connessione e poi quello che invia al server la stringa mi lancia un'eccezione perchè la variabile output è stata dichiarata fuori ma è stata inizializzata nel metodo per la connessione.
comuque scusami per la "stupidità" ma perchè il hai usato inserito tutto nel costruttore e non hai fatto un metodo per la connessione??
grazie mille