Ciao a tutti mi sto avvicinando un pò ai socket e ho provato a scrivere un pò di codice aiutandomi dal libro. una cosa che però non capisco è come vengono ricevuti i bytes e come si possono convertire in stringhe.
posto qua sotto il codice del server:
codice:
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;


public class Main_socket {

	public static final int PORT = 7890;
	
	public static void main(String[] args) throws IOException {
		
		
	ServerSocket server = new ServerSocket(PORT);
	byte[] bytes = new byte[1024];
	String str_input = "";
		
	for ( ;; ) {
		try {
			System.out.println("In attesa della connessione...");
			Socket sock = server.accept();
			System.out.println("Connessione avvenuta con successo con: " + sock.getInetAddress().getHostName());
			System.out.println("Channel: " + sock.getInetAddress()+" "+ sock.getPort());
			System.out.println("Connessione accettata sulla porta " + PORT);
			InputStream in = sock.getInputStream();
			int len;
			while ( (len=in.read(bytes)) > 0 ) {
				System.out.write(bytes, 0, len);
				// str_input = new String( bytes, "UTF-8" );
				// System.out.println(str_input);
                                // System.out.print("-");
				
			}
			
			in.close();
			
		} catch ( IOException e ) {
			e.printStackTrace();
		}		
		
	}
		
	}
	
}
non ho ben capito come funziona la lettura dei bytes che arrivano, perchè provando a scrivere "ciao" dal client(situato su un'altra macchina) , attivando la System.out.print("-"); vedo che stampa(solo dopo aver dato invio):
codice:
c-iao-
quindi significa che arriva il primo carattere e viene eseguita la prima write, poi la System.out.print("-"); e poi vengono ricevuti gli ultimi 3 caratteri e viene rieseguita la System.out.print("-");.
Inoltre non ho capito come passare da byte a stringa, ho provato con str_input = new String( bytes, "UTF-8" ); ma mi stampa caratteri strani...anzi sempre un quadrato ripetuto tantissime volte!
grazie per l'aiuto!
ciao