iae galera,
sou iniciante em programação e gostaria de um auxilio para entender esses códigos através de comentários… já realizei alguns, porém não consegui compreender o código por completo.
basicamente sei que ele está utilizando threads para conectar múltiplos clientes, utilizando um servidor que fica em um looping infinito aguardando a próxima solicitação de conexao. Se alguem mais experiente puder me ajudar a comentar esse código ficarei grato
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;
public class Servidor {
public static void main(String[] args) { ServerSocket srv=null; Socket cli; int porta= 3344;
try { srv = new ServerSocket(porta); //bind while(true){//servidor entra em looping infinito System.out.println("Aguardando o cliente...."); cli = srv.accept(); Atende t = new Atende(cli); t.start(); } //fim do while do looping } catch (Exception e) { System.out.println("ERRO: "+e.getMessage()); //srv.close(); } }
}
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;
public class Controle {
public static void main(String[] args) { ServerSocket srv=null; Socket cli; int porta= 3345;
try { srv = new ServerSocket(porta); //bind while(true){ System.out.println("Aguardando o cliente...."); cli = srv.accept(); Atende t = new Atende(cli); t.start(); } } catch (Exception e) { System.out.println("ERRO: "+e.getMessage()); //srv.close(); } }
}
import java.io.PrintStream;
import java.net.Socket;
import java.util.Scanner;
public class Cliente {
public static void main(String[] args) { Socket cli; PrintStream saida; Scanner in, in2; try { cli = new Socket("localhost", 3345);//solicitando conexao in2 = new Scanner(System.in); saida = new PrintStream(cli.getOutputStream());//realiza papel complementar ao in da classe servidor String msg = in2.nextLine(); saida.println(msg);//mandando string para o servidor in = new Scanner(cli.getInputStream()); String linha = in.nextLine(); System.out.println("Recebido: "+ linha); cli.close();//encerrar conexao } catch (Exception e) { System.out.println("ERRO: "+ e.getMessage()); } }
}
import java.io.IOException;
import java.io.PrintStream;
import java.net.Socket;
import java.util.Scanner;
public class AtendeControle extends Thread{
Scanner in;
Scanner inServer;
PrintStream saida;
PrintStream saidaCli;
Socket cli;
Socket server;
public AtendeControle(Socket cli){
this.cli = cli;
}@Override public void run(){ try{ System.out.println("Conectado com "+ cli.getInetAddress().getHostAddress()); in = new Scanner(cli.getInputStream()); String linha = in.nextLine(); System.out.println("Recebido: "+ linha); server = new Socket("localhost",3344); saida = new PrintStream(server.getOutputStream()); saida.println(linha); inServer = new Scanner(server.getInputStream()); linha = inServer.nextLine(); saidaCli = new PrintStream(cli.getOutputStream()); saidaCli.println(linha); cli.close(); }catch(IOException e){ System.out.println("ERRO:"+e.getMessage()); } }
}
import java.io.IOException;
import java.io.PrintStream;
import java.net.Socket;
import java.util.Scanner;
public class Atende extends Thread{
Scanner in;
PrintStream saida;
Socket cli;public Atende(Socket cli){ this.cli = cli; } @Override public void run(){ try{ System.out.println("Conectado com "+ cli.getInetAddress().getHostAddress()); in = new Scanner(cli.getInputStream()); String linha = in.nextLine(); System.out.println("Recebido: "+ linha); int cont = linha.length(); saida = new PrintStream(cli.getOutputStream()); saida.println(cont); cli.close(); }catch(IOException e){ System.out.println("ERRO:"+e.getMessage()); } }
}