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