View Full Version : java...guida ai socket
mi potreste consigliare una buona guida sui socket in java??
possibilmente in italiano e soprattutto con esempi...
vorrei riuscire a creare un client irc :eek:
grazie
in italiano non saprei darti un link di riferimento, ma in inglese c'è questo (http://www.javaworld.com/javaworld/jw-12-1996/jw-12-sockets.html)
con un bell'esempio completo a pagina 2.
Tieni conto che in java socket e thread sono talmente semplici da gestire che non credo ci siano guide più complete di quella che ti segnalo.
Ciao.
il link corretto è questo (http://www.javaworld.com/javaworld/jw-12-1996/jw-12-sockets.html)
grazie!
Grazie di che, ti mando pure i link sbagliati! :muro:
Ho corretto l'URL che avevo postato spostandolo sul quello che hai segnalato tu ( è ora che io prenoti un posto all'ospizio se c'è bisogno che qualcuno mi segnali quali sono i link che volevo segnalare io :D )
Scusa ancora.
Ciao
se io volessi loggarmi in un server ftp non mi basta fare
os.writeBytes("user guest\n");
os.writeBytes("pass guest\n");
?
poi non riesco a capire a cosa serve
catch (IOException e) {
System.err.println("Couldn't get I/O for the connection to: hostname");
}
grazie!
Si tratta di gestione delle eccezioni.Ogni azione che può sollevare un'eccezione va incorporata in un blocco try/catch.Nel blocco catch metti come ci si deve comportare in caso di una eccezione (in questo caso IOException),nel tuo caso stampi una stringa e l'errore.
Originally posted by "SteR9"
se io volessi loggarmi in un server ftp non mi basta fare
os.writeBytes("user guest\n");
os.writeBytes("pass guest\n");
Per un Client FTP puoi gardare le due pagine di questo bell'articolo (in italiano):
pagina 1 (http://www.mokabyte.it/1998/04/ftp1.htm)
pagina 2 (http://www.mokabyte.it/1998/06/ftp2.htm)
Originally posted by "PGI"
Per un Client FTP puoi gardare le due pagine di questo bell'articolo (in italiano):
pagina 1 (http://www.mokabyte.it/1998/04/ftp1.htm)
pagina 2 (http://www.mokabyte.it/1998/06/ftp2.htm)
ho provato con
os.println("user guest");
ma mi da questo errore
cannot resolve symbol
symbol : method println (java.lang.String)
location: class java.io.DataOutputStream
os.println("user guest");
^
perchè??
Secondo il messaggio di errore del compilatore, nel codice si cerca di usare il metodo println (appartenente agli oggetti PrintStream) con un oggetto DataOutputStream (che non ha il metodo println()).
Se stai usando un socket, per usare un printstream devi prendere il canale di output e passarlo al costruttore PrintStream(OutputStream out):
PrintStream printer=new PrintStream(socket.getOuputStream());
Se vuoi lavorare con un DataOutputStream su stringhe (con la certezza che ciò che parte sia anche ciò che arriva) devi codificare i byte che rappresentano la stringa.
Il package java.nio.charset contiene i relativi strumenti.
Ciao.
ok sono riuscito a fare tutto...
ora vorrei se io volessi usare dei proxy???esiste un metodo che mi permette di utilizzarli??
Vuoi fare un proxy usando java o vuoi far passare la connessione che hai creato in java attraverso un server proxy?
Originally posted by "PGI"
Vuoi fare un proxy usando java o vuoi far passare la connessione che hai creato in java attraverso un server proxy?
voglio far passare la connessione che ho creato in java attraverso un server proxy... :)
Non garantisco nulla, ma il codice per "bucare" il server proxy (FTP) dovrebbe essere
Properties p=System.getProperties();
p.put( "ftpProxySet", "true" );
p.put( "ftpProxyHost", "host proxy" );
p.put( "ftpProxyPort", "porta proxy" );
p.put( "ftpProxyUserName", "proxyUserName");
p.put( "ftpProxyPassword", "proxyPassword");
funziona?
Originally posted by "PGI"
Non garantisco nulla, ma il codice per "bucare" il server proxy (FTP) dovrebbe essere
Properties p=System.getProperties();
p.put( "ftpProxySet", "true" );
p.put( "ftpProxyHost", "host proxy" );
p.put( "ftpProxyPort", "porta proxy" );
p.put( "ftpProxyUserName", "proxyUserName");
p.put( "ftpProxyPassword", "proxyPassword");
funziona?
ma come lo devo utilizzare ??
in pratica sto creando un client irc e vorrei dare la possibilità di collegarsi al server anche tramite proxy...posso utilizzare il codice che mi hai dato??se si come?
Quelle cinque righe cambiano alcune proprietà lette dalla jvm a runtime in modo tale che di fronte all'apertura di un canale FTP protetto da un proxy vengano inviate prima di tutto le informazioni username e password.
Per testare se funzionano puoi metterle in una parte qualunque del codice sorgente che preceda l'apertura della connessione. Poi fai in modo collegarti all'host protetto che hai passato alla proprietà di sistema.
Verificato che funzioni non ti resta che integrare nel tuo programma un qualunque tipo di interazione con l'utente che permetta allo stesso di inserire username e password quando la connessione passi attraverso un proxy server FTP (una finestra di dialogo che chieda username e password) oppure la richiesta iniziale di username e password per l'host protetto a cui ti collegherai.
Purtroppo non ricordo più dove ho pescato questo sistema per passare attraverso un proxy, altrimenti ti passerei il link.
Appena ho un attimo provo anch'io a vedere se funziona.
Ciao,
ho fatto così:
try {
Properties p=System.getProperties();
p.put( "ftpProxySet", "true" );
p.put("ftpProxyHost", "194.63.229.137" );
p.put( "ftpProxyPort", "80" );
p.put( "ftpProxyUserName", "");
p.put( "ftpProxyPassword", "");
smtpSocket = new Socket("62.152.43.744", 6667);
os = new PrintStream(smtpSocket.getOutputStream());
is = new DataInputStream(smtpSocket.getInputStream());
} catch (UnknownHostException e) {
System.err.println("Don't know about host: hostname");
} catch (IOException e) {
System.err.println("Couldn't get I/O for the connection to: hostname");
}
però mi da questo errore
cannot resolve symbol
symbol : class Properties
location: class smtpClient
Properties p=System.getProperties();
^
Properties cos'è??perchè mi da errore?[/b]
Properties è parte del package java.util
Come hai fatto è ok.
ok lo compila ma nn va...mi connette senza proxy...
non è che devo passare qualche parametro al socket??
Azz, mi ero dimenticato che usi un Socket e non un URL.
rimuovi tutta la robaccia che ti ho fatto mettere nel codice e scrivi quest'altra.
System.setProperty("socksProxyHost", "nomehost");
Dovrebbe impostare i socket per usare il proxy.
Io sono alla frutta, se non funge... :cry:
Ciao.
Originally posted by "PGI"
Azz, mi ero dimenticato che usi un Socket e non un URL.
rimuovi tutta la robaccia che ti ho fatto mettere nel codice e scrivi quest'altra.
System.setProperty("socksProxyHost", "nomehost");
Dovrebbe impostare i socket per usare il proxy.
Io sono alla frutta, se non funge... :cry:
Ciao.
non va :cry: io ho messo prima quello e poi la stringa che mi crea il socket...ma non va :cry:
Per curiosità che versione di Java usi?
Questo non dovrebbe succedere, perchè i socket java anche senza impostare la JVM, di default passano per il canale proxy del sistema in uso (se presente).
Prova da impostare anche la porta proxy con
System.setProperty("socksProxyPort","numeroporta");
Il bello è che in teoria avrebbe dovuto essere un "andare a colpo sicuro" :confused:
http://java.sun.com/j2se/1.4.1/docs/guide/net/properties.html#socks
Originally posted by "PGI"
Per curiosità che versione di Java usi?
Questo non dovrebbe succedere, perchè i socket java anche senza impostare la JVM, di default passano per il canale proxy del sistema in uso (se presente).
Prova da impostare anche la porta proxy con
System.setProperty("socksProxyPort","numeroporta");
Il bello è che in teoria avrebbe dovuto essere un "andare a colpo sicuro" :confused:
http://java.sun.com/j2se/1.4.1/docs/guide/net/properties.html#socks
forse devo specificare se uso un sock4 socks5 o proxy...come faccio a specificarlo?
Non funziona esattamente così, quella prorietà imposta il server proxy per tutti i socket creati a runtime e gestiti dalla JVM.
Il server proxy può essere sia "v4 che v5" Non ho la più pallida idea di che differenza ci sia tra un server proxy Socks v4 e v5 ma la jvm li gestisce entrambi indifferentemente.
Alla bersagliera!
Se non va così vengo a mangiarmi il proxy!
System.getProperties().put("proxySet", "true");
System.setProperty("socksProxyPort","porta proxy");
System.setProperty("socksProxyHost","server proxy");
System.getProperties().put("ftpProxySet", "true");
System.getProperties().put("http.proxyHost", "server proxy");
System.getProperties().put("http.proxyPort", "porta proxy");
System.getProperties().put("https.proxyHost", "server proxy");
System.getProperties().put("https.proxyPort", "porta proxy");
System.getProperties().put("ftpProxyHost", "server proxy");
System.getProperties().put("ftpProxyPort", "porta proxy");
Questo abilita il passaggio dei flussi di qualunque connessione in partenza e in arrivo usate da java attraverso i (o il) proxy identificati dalle stringhe "porta proxy" e "server proxy" che si tratti di connessioni http,https, ftp, socket v5 e v4.
Mi aspetto un messaggio del tipo "accidenti adesso funziona" :D
Originally posted by "PGI"
Alla bersagliera!
Se non va così vengo a mangiarmi il proxy!
System.getProperties().put("proxySet", "true");
System.setProperty("socksProxyPort","porta proxy");
System.setProperty("socksProxyHost","server proxy");
System.getProperties().put("ftpProxySet", "true");
System.getProperties().put("http.proxyHost", "server proxy");
System.getProperties().put("http.proxyPort", "porta proxy");
System.getProperties().put("https.proxyHost", "server proxy");
System.getProperties().put("https.proxyPort", "porta proxy");
System.getProperties().put("ftpProxyHost", "server proxy");
System.getProperties().put("ftpProxyPort", "porta proxy");
Questo abilita il passaggio dei flussi di qualunque connessione in partenza e in arrivo usate da java attraverso i (o il) proxy identificati dalle stringhe "porta proxy" e "server proxy" che si tratti di connessioni http,https, ftp, socket v5 e v4.
Mi aspetto un messaggio del tipo "accidenti adesso funziona" :D
dovrebbe funzionare...il problema è che ho scoperto che il proxy di fastweb non funziona :cry: e non ho un altro proxy con cui provare...
Per vedere puoi provare a scaricare un proxy da internet
Il primo che ho trovato per windows
qua (http://www.easyproxy.com/en/content/ezproxy/download.htm)
poi puoi rimuoverlo.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.