Salve a tutti ragazzi. devo creare un Server ed un Clinet utilizzando le Socket in java.
Allora il client si connette ad un numero di porta su cui è in attesa il server, il numero di porta lo decido io arbitrariamente.
Quando il client si connette il server gli manda un messaggio di benvenuto e fin quin nessun problema, tutto liscio come l'olio
Ora però non riesco più ad andare avanti poichè la traccia mi chiede che i due(Client e Server) comunichino
Mi spiego meglio, Dopo il messaggio di benvenuto il Server tramite un input da tastiera invia una stranga al client e il clien la visualizza
ES: (dopo essersi connesso il server tramite l'input da tastiera scirve "Ciao come stai" e il client la deve visualizzare.)
Sembra semplice ma non ci rieco. Vi posto anche il codice del client e del server
spero mi possiate dare un aiuto....
CODICE SERVER:
codice:
import java.io.*;
import java.net.*;
public class Server extends Thread{
PrintStream PrintStr = null;
private ServerSocket Server;
public static void main(String[] args) throws Exception
{
new Server();
}
public Server() throws Exception
{
Server = new ServerSocket(4331);
System.out.println("Il server è in attesa sulla porta 4321");
this.start();
}
public void run(){
while(true)
{
try{
System.out.println("In attesa di connessione...");
Socket client = Server.accept();
System.out.println("Connessione accettata da: " + client.getInetAddress());
// Connect c = new Connect(client);
OutputStream slout = client.getOutputStream();
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(slout));
bw.write("Benvenuto sul server");
bw.write("Ora sei connesso sul server!\n");
// InvioMessaggioClient() throws IOException{
String InputLine = null;
System.out.println("\nInvia il messaggio:\n");
/*Per prendere un input da tastiera */
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
InputLine = br.readLine();
PrintStr.println(InputLine);
}
catch(Exception e){}
}
}
}
class Connect extends Thread{
private Socket client = null;
BufferedReader in = null;
PrintStream out = null;
public Connect(){}
public Connect(Socket clientSocket){
client = clientSocket;
try
{
in = new BufferedReader(new InputStreamReader(client.getInputStream()));
out = new PrintStream(client.getOutputStream(), true);
}
catch(Exception e1)
{
try{ client.close();}
catch(Exception e)
{
System.out.println(e.getMessage());}
return;
}
//this.start();
}
public void run()
{
try
{
out.println("Generico messagio per il clinet");
out.flush();
//chiude gli stream e le connessioni
out.close();
in.close();
client.close();
}
catch(Exception e){}
}
}
</script>
CODICE CLIENT:
codice:
import java.io.*;
import java.net.*;
import java.util.*;
public class Client{
public static void main(String[] args){
BufferedReader in = null;
PrintStream out = null;
Socket socket = null;
String message;
try
{
//apertura di una soket di connessione
socket = new Socket("localhost", 4331);
//Apre i canali di I/O
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
out = new PrintStream(socket.getOutputStream(),true);
//legge dal server
message = in.readLine();
System.out.println("Messaggio ricevuto dal server: "+ message);
out.close();
in.close();
}
catch(Exception e){
System.out.println(e.getMessage());
}
}
}
PS: da premettere una cosa. Qunado compilo prima il server e poi il clinet diciamo che il tutto funziona nel senso che Il server mi chiede di inserire il messaggio da tastiera ma il Client non lo riceve o non lo visualizza
Aiutatemi per favore