Ahoj, rád bych si u tohoto kódu vytvořil jednoduchou autentizaci. Kdy Server po spuštění bude vyžadovat Username, po zadání do konzole si ho uloží a dále bude vyžadovat Password, což bude číslo, které bude součtem ASCII hodnot zadaného Username. Bohužel ale nevím, jak nastavit server, aby tyto dva požadavky obsloužil za sebou a uložil si je ? Za pomoc budu velice rád !
Napadlo mě vytvořit si dvě metody, kde by každá do jisté míry kopírovala while smyčku z metody RUN, ale nějak se mi to nedaří. Díky za případné rady a tipy.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author Jenda
*/
public class Server extends Thread {
Socket s;
public static void main(String[] args) {
try {
ServerSocket ss = new ServerSocket(5222);
while (true) {
Socket s = ss.accept();
Server srv = new Server();
srv.s = s;
srv.start();
}
} catch (IOException ex) {
Logger.getLogger(Server.class.getName()).log(Level.SEVERE, null, ex);
}
}
/*Tady si měl jako vstupní parametr "Socket s" takže ti to
bralo z toho, ale už si nikde tomu vláknu neřekl kde to "s"
má vzít. Zkus to takhle.*/
@Override
public void run() {
try {
InputStream is = s.getInputStream(); //ze site
OutputStream os = s.getOutputStream(); // to co ja posilam do site
BufferedReader br = new BufferedReader(new InputStreamReader(is)); //obaleni buffered abych mohl cist po celych radcich
String str;
while ((str = br.readLine()) != null) {
System.out.println(">> " + str);
str = "SRV: " + str + "\n";
os.write(str.getBytes());
}
} catch (IOException ex) {
Logger.getLogger(Server.class.getName()).log(Level.SEVERE, null, ex);
}
}
}