Il client inizia a crescere…

2 12 2007

Ieri notte, con Tommy, abbiamo risolto un paio di bachi nel client di JLS (che ancora deve essere rilasciato).

Adesso i comandi che vengono implementati nel client arrivano al server senza problemi, il problema l’abbiamo risolto riscrivendo una parte del server (quella, appunto, di gestione delle socket) ma credo proprio che dovremo riscrivere praticamente tutto JLS, principale, dato che per lo scambio di dati (e anche per il download/upload) dovrò implementare il tutto affinché sia il più veloce possibile.

Eccovi il codice:
-questa è la main-
/*
* JavaLightServer - Interactive Shell Client 0.1
* Also knowed as JavaLightClient -
* Copyright (C) 2007 hawake - hawake[at]gmail[dot]it
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see
*/
package JLC;
import java.io.*;
import java.net.*;
public class JavaLightClient {
public static void main(String [] args) throws UnknownHostException, IOException, Exception {
try {
if(args[0] != null && args[1] != null) {
int ArgsParsed = Integer.parseInt(args[1]);
String command = "";
boolean finito = false;
String ciao = "127.0.0.1";
Client client = new Client();
client.connect(ciao, ArgsParsed);
System.out.println("\nConnected to " + ciao + " port: " + ArgsParsed + "; your IP is: " + client.address());
String welcome = client.read();
if(welcome != null) {
System.out.println(welcome);
}
while (!finito) {
InputStreamReader tastiera = new InputStreamReader(System.in);
BufferedReader buf = new BufferedReader(tastiera);
command = buf.readLine();
if (command.equals("ls")) {
client.send((command+"\n").getBytes());
System.out.println(client.read());
} else if (command.equals("exit")) {
client.send(command.getBytes());
client.read();
client.close();
finito = true;
}
}
}
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("\nJavaLightClient 0.1 console version\nUsage:\n\tjava JavaLightClient [IP] [port]");
}
}
}

e della classe Client, che gestisce la comunicazione e la socket:
package JLC;
import java.io.*;
import java.net.*;
class Client {
public Client(Socket s) throws IOException {
this.initialized = true ;
this.socket = s;
this.input = this.socket.getInputStream();
this.output = this.socket.getOutputStream();
}
public Client() {
this.initialized = false ;
this.socket = null;
}
public String address() {
return this.socket.getInetAddress().toString();
}
public void connect( String host, int port) throws UnknownHostException, IOException {
if( !this.initialized )
this.socket = new Socket(host,port);
this.input = this.socket.getInputStream();
this.output = this.socket.getOutputStream();
}
public void send(byte[] byteStream) throws IOException {
this.output.write(byteStream);
this.output.flush();
}
public String read() throws IOException{
String buffer = "";
byte b;
while( (b = (byte)this.input.read()) != (byte)'\n' ) {
buffer += (char)b;
}
return buffer.trim();
}
public void close() throws Exception {
this.input.close();
this.output.close();
}
private Socket socket = null;
private InputStream input ;
private OutputStream output ;
private boolean initialized = false ;
}

Il tutto rilasciato ovviamente sotto GNU GPL v3.

Saluti
hawake


Azioni

Information

Lascia un commento

Effettua il login con uno di questi metodi per inviare il tuo commento:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...




%d blogger cliccano Mi Piace per questo: