Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Programma simile ad una chat per la scuola in Java

    Ciao ragazzi, sono nuovo del forum e sono un appassionato di programmazione e tecnologia in generale. Ho un problema, il prof ci ha inviato due file da modificare per fare una specie di chat. I due file sono:

    EchoClient:

    codice:
    import java.io.*;
    import java.net.*;
    
    
    public class EchoClient {
    public static void main(String[] args) throws IOException {
    
    
    String serverHostname = "";
    int numeroPorta = -1;
    
    
    if (args.length == 1)
    serverHostname = args[0];
    else if (args.length == 2)
    {
    serverHostname = args[0];
    numeroPorta = Integer.parseInt(args[1]);
    }
    
    
    
    System.out.println ("4AIT: Attemping to connect to host " +
    serverHostname + " on port "+numeroPorta+".");
    
    
    Socket echoSocket = null;
    PrintWriter out = null;
    BufferedReader in = null;
    
    
    try {
    echoSocket = new Socket(serverHostname, numeroPorta);
    out = new PrintWriter(echoSocket.getOutputStream(), true);
    in = new BufferedReader(new InputStreamReader(
    echoSocket.getInputStream()));
    } catch (UnknownHostException e) {
    System.err.println("4AIT: Don't know about host: " + serverHostname);
    System.exit(1);
    } catch (IOException e) {
    System.err.println("4AIT: Couldn't get I/O for "
    + "the connection to: " + serverHostname);
    System.exit(1);
    }
    
    
    BufferedReader stdIn = new BufferedReader(
    new InputStreamReader(System.in));
    String userInput;
    
    
    System.out.print ("4AIT: client: ");
    while ((userInput = stdIn.readLine()) != null) {
    out.println(userInput);
    
    System.out.println("server: " + in.readLine());
    System.out.print ("4AIT: client: ");
    }
    
    
    out.close();
    in.close();
    stdIn.close();
    echoSocket.close();
    }
    }

    EchoServer:

    codice:
    import java.net.*; 
    import java.io.*; 
    
    
    public class EchoServer 
    { 
    public static void main(String[] args) throws IOException 
    { 
    ServerSocket serverSocket = null; 
    
    
    try { 
    serverSocket = new ServerSocket(18169); 
    } 
    catch (IOException e) 
    { 
    System.err.println("Could not listen on port: 18169."); 
    System.exit(1); 
    } 
    
    
    Socket clientSocket = null; 
    System.out.println ("Waiting for connection.....");
    
    
    try { 
    clientSocket = serverSocket.accept(); 
    } 
    catch (IOException e) 
    { 
    System.err.println("Accept failed."); 
    System.exit(1); 
    } 
    
    
    System.out.println ("Connection successful");
    System.out.println ("Waiting for input.....");
    
    
    PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), 
    true); 
    BufferedReader in = new BufferedReader( 
    new InputStreamReader( clientSocket.getInputStream())); 
    
    
    String inputLine; 
    BufferedReader stdIn = new BufferedReader(
    new InputStreamReader(System.in)); 
    while ((inputLine = in.readLine()) != null) 
    { 
    System.out.println ("Client: " + inputLine); 
    //out.println(inputLine); 
    System.out.print("Server: ");
    String userInput = stdIn.readLine();
    out.println(userInput);
    if (inputLine.equals("Bye.")) 
    break; 
    } 
    
    
    out.close(); 
    in.close(); 
    clientSocket.close(); 
    serverSocket.close(); 
    } 
    }

    Questi avviano una comunicazione Client-Server in cui uno aspetta la risposta dell'altro prima di poter riscrivere..Io devo modificarli in moda da far connettere il Server con il primo client, il client scrive da tastiera un dato che il Server registra, il server a sua volta manda al client il numero di utenti connessi (0?). A questo punto il client resta in attesa..Dopo si attiva il secondo client che scrive da tastiera un dato che viene registrato dal server, quest'ultimo invio il numero di utenti connessi al server (1?). A questo punto il secondo client manda un dato al server che lo manda il primo client e viceversa. Io veramente non ho idea di come si faccia perchè il prof non ha spiegato cosa fanno tutte queste istruzioni,(se magari qualcuno può spiegarmelo molto velocemente e facilmente lo ringrazierei ) e di conseguenza non so cosa andare a modificare...
    Spero di essere stato chiaro, vi ringrazio tutti anticipatamente
    Ultima modifica di LeleFT; 10-12-2014 a 16:32 Motivo: Aggiunti i tag CODE

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Java ha una sezione dedicata, dove ho spostato la discussione.
    Il codice, inoltre, va postato indentato e senza formattazioni di colorazione all'interno degli appositi tag

    [CODE] .. [/CODE]

    in modo da mantenere l'indentazione anche nel forum e fornire una formattazione che lo renda più leggibile.

    Ho corretto ove possibile.

    Rimane il problema che, al momento, la richiesta è altamente border-line: il forum non può essere sostituito da un insegnante o un corso; non si può chiedere di spiegare per filo e per segno cosa fa un'applicazione che si è trovato chissà dove, né si può chiedere di sviluppare per proprio conto intere parti di codice. Il forum serve a cercare di risolvere uno specifico problema: il problema che hai posto non è affatto specifico, ma molto generale e potrebbe richiedere la riscrittura completa dell'applicazione o di una parte di essa. Quindi, per prima cosa cerca di specificare meglio qual è il tuo problema, eventualmente scomponendolo in sottoproblemi e affrontando ciascu sottoproblema per volta.


    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

  3. #3
    LeleFT hai pienamente ragione (ti ringrazio anche per le modifiche che hai fatto) ma non ho idea di cosa fare..Siamo passati dai form con C# a queste cose di punto in bianco e il prof lo vuole consegnato Venerdì altrimenti mette un voto negativo. Abbiamo cercato di fargli capire che ci viene difficile e ci ha risposto dicendo che si può fare benissimo e ha iniziato a spiegare i thread...indovinate come? Prendendo un codice da internet
    Comunque la consegna è proprio questa: Devo modificare i codici in modo da far connettere il Server con il primo client, il client scrive da tastiera un dato che il Server registra, il server a sua volta manda al client il numero di utenti connessi (0?). A questo punto il client resta in attesa..Dopo si attiva il secondo client che scrive da tastiera un dato che viene registrato dal server, quest'ultimo invio il numero di utenti connessi al server (1?). A questo punto il secondo client manda un dato al server che lo manda il primo client e viceversa. Così dovrebbe avviarsi una specie di chat..
    Ultima modifica di Rosario1; 10-12-2014 a 21:33

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
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.