Visualizzazione dei risultati da 1 a 8 su 8

Discussione: [Java] Socket Java

  1. #1

    [Java] Socket Java

    Devo utilizzare un servizio tramite tcp ip. Vi posto una connessione tipo fatta con telnet.

    >telnet <Server host> 8000
    Trying 0.0.0.0...
    Connected to <Server host>.
    MAM Server v03.04
    login: ****
    password: ****

    in pratica mi collego via telnet al server, invio login e pass e poi posso utilizzare i servizi del server.
    Voglio creare un'applicazione scritta in Java che faccia la stessa cosa. Immagino di dover usare le socket Java.
    La mia domanda è ma se il server non mi fornisce una classe java con un ServerSocket come posso collegarmi?

    C'è qualcosa che mi sfugge?

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [Java] Socket Java

    Originariamente inviato da NightlyBlue
    Voglio creare un'applicazione scritta in Java che faccia la stessa cosa. Immagino di dover usare le socket Java.
    La mia domanda è ma se il server non mi fornisce una classe java con un ServerSocket come posso collegarmi?

    C'è qualcosa che mi sfugge?
    Per collegarsi ad un host tramite socket ti basta usare la classe Socket. Non vedo cosa c'entra ServerSocket, visto che la tua app. fa da client.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Ti sfugge il fatto che il server già ce l'hai.
    A te non interessa sapere che tipo di server c'è dall'altra parte (un server scritto in C? in Java? in .NET?) a te basta collegarti e inviare delle stringhe:
    codice:
    Socket s = new Socket(host, porta);
    
    // Creo un oggetto per leggere quello che il server mi invia
    BufferedReader br = new BufferedReader( new InputStreamReader( s.getInputStream() ) );
    
    // Creo un oggetto per inviare stringhe al server
    PrintStream ps = new PrintStream( s.getOutputStream() );
    
    // Ora invio la login:
    ps.println("nomeutente");
    
    // Leggo la risposta dal server (anche se non me ne faccio niente)
    String linea = br.readLine();
    
    // Ora  invio la password:
    ps.println("password");
    
    // ecc. ecc. ecc.
    
    // Alla fine, scollego tutto:
    ps.close();
    br.close();
    s.close();
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  4. #4

    Re: Re: [Java] Socket Java

    Originariamente inviato da andbin
    Per collegarsi ad un host tramite socket ti basta usare la classe Socket. Non vedo cosa c'entra ServerSocket, visto che la tua app. fa da client.
    ok ho capito. Pensavo che mi dovessero fornire un jar con il ServerSocket. Invece con il Socket client posso già mandare e ricevere stringhe basta appunto inizializzare il mio socket con indirizzo e porta giuste...

    Thanks

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    25
    Ciao... E se la connessione dovessi crearla per FTP?? Siccome usa due connessioni come faccio?? ho sempre il problema dell'autenticazione... ma su quale connessione??? come modifico il codice sopra??? grazie...

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Non capisc perchè dovresti modificare il codice sopra:
    FTP è un protocollo per il trasferimento dati che fa uso di un connessione TCP/IP.

    Il codice che ho postato sopra dovrebbe averti già chiarito tutto: hai due canali (InputStream e OutputStream) attraverso cui invii (OutputStream) i comandi e ricevi (InputStream) le risposte dal server FTP.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    25
    Ma quindi gestisco tutto cosi??? io sapevo che avevo due connessioni con ftp... una per il comandi e una per ricevere... ma pensavo ci volessero due socket... siccome quando mi connetto sulla porta 21 dopo l'autenticazione dovrebbe darmi un altra porta per creare la connessione per lo scambio dati... questo nn capisco....

  8. #8
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Quando tu ti colleghi con telnet sulla porta 21 non hai nessun'altra connessione: la comunicazione avviene tra il tuo PC (quindi il tuo FileSystem) e l'host remoto.

    Comandi come PUT inviano un file presente sul tuo FileSystem al sistema remoto, mentre comandi come GET prelevano dal sistema remoto e salvano sul tuo FileSystem locale.

    Fine della storia.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.