Problemas con java, aplicacion Fortune (FortuneClient)

Cuestiones y dudas acerca de lenguajes de programación diversos.

Moderador: Moderadores

Avatar de Usuario
Rayan

Problemas con java, aplicacion Fortune (FortuneClient)

Mensaje por Rayan » Lun Abr 26, 2004 12:39 am

Hola, mirad, estoy empezando a toquetear algo de java, y estoy haciendo una aplicacion del tipo fortune, q te un cliente envia a un server una peticion, el server le envia un refran, por ejemplo, y el cliente lo visiona.

El server funciona, el cliente no, envia la peticion, pero no muestra nada, ahi os dejo el codigo del cliente:

import java.net.*;
import java.io.*;
import java.util.*;

public class FortuneClient
{
public static void main (String [] argv)
{
Socket client;
String opcioClient;
opcioClient = argv[0];
BufferedReader entrada;
DataOutputStream sortida;

int port=8002;
try
{

client = new Socket ("localhost", port);
String in;

sortida = new DataOutputStream( client.getOutputStream() );
String get="GET /";
PrintWriter escriu = new PrintWriter(sortida,true);
if (opcioClient.equals("-a")) //si escribim -a
{

escriu.println("GET /fortune?opcio=-a HTTP/1.1");
}
if (opcioClient.equals("-l")) //si rebem -l enviem totes les dites
{
escriu.println("GET /fortune?opcio=-l HTTP/1.1");
}

entrada = new BufferedReader(new InputStreamReader(System.in));
System.out.println(entrada.readLine());
escriu.close();
entrada.close();
sortida.close();
client.close();

}

catch (Exception e)
{
e.printStackTrace();
}

}
}

Avatar de Usuario
Rayan

y el server

Mensaje por Rayan » Lun Abr 26, 2004 12:41 am

y el server este codigo:

import java.net.*;
import java.io.*;
import java.util.*;

public class FortuneServer
{
public static Vector fortunes; //Creem array
public static void carregafortunes(String fitxer) //llegim fitxer amb fortunes
{
try
{
fortunes = new Vector(); //Inicialitzem vector fortunes
String fortune = "";
BufferedReader in = new BufferedReader(new FileReader("fortunes1.txt")); //variable in apunta a fortunes1.txt
String linia; //guardem cada linia
linia = in.readLine(); //llegim fitxer i l'anem guardant
while (linia != null) //mentres no arribem al final del fitxer
{
if (linia.equals("%")) //Si arribem al final d'una fortuna
{
fortunes.add(fortune); //afegim al vector fortunes una nova linia
fortune = ""; //resetegem linia
}
else //sino afegim un retorn de carro
{
fortune = fortune + linia + "\n";
}
linia = in.readLine();
}
in.close(); //tanquem lectura fitxer
}
catch (IOException f)
{
f.printStackTrace();
}
}
public static int tornafortune() //funcio q retorna un valor entre 0 i tamany vector fortunes
{
int vect = FortuneServer.fortunes.size(); //creem una variable vect a on guardarem el valor maxim del vector fortunes
Random aleatori = new Random(); //es crea una funcio de tipus random
return aleatori.nextInt(vect); //i retornem aquest valor
}
public static void main (String[] argv)
{
ServerSocket server;
FortuneServer.carregafortunes("fortunes1.txt"); //carreguem les fortunes al main
try
{
server = new ServerSocket(8002);
while (true)
{
Socket client = server.accept(); //esperem que el client ens faci una petició
BufferedReader bfr = new BufferedReader(new InputStreamReader(client.getInputStream())); //obrim un stream de lectura
String peticioclient=bfr.readLine(); //i grabem el que ens demana el client
System.out.println(peticioclient);
OutputStream v = client.getOutputStream(); //preparem stream de sortida
PrintWriter escriu = new PrintWriter(v,true);

if (peticioclient.equals("GET /fortune?opcio=-a HTTP/1.1")) //si rebem -a enviem dita aleatoria
{
int num = tornafortune(); //rebem numero aleatori
escriu.println(FortuneServer.fortunes.elementAt(num)); //enviem fortune
}
if (peticioclient.equals("GET /fortune?opcio=-l HTTP/1.1")) //si rebem -l enviem totes les dites
{
for (int a=0; a<FortuneServer.fortunes.size(); a++){
escriu.println(FortuneServer.fortunes.elementAt(a)); //enviem fortune
}
}

escriu.close(); //tanquem sockets
v.close();
client.close();
}
}
catch (IOException e)
{
e.printStackTrace();
}
}
}

Avatar de Usuario
Rayan

jeje

Mensaje por Rayan » Lun Abr 26, 2004 12:43 am

Bueno, si alguien quiere responder, le estaria agradecido. Como podeis ver, el cliente se ejecuta con la instruccion -a o -l, la -a muestra un refran al azar, y el -l muestra todos los refranes.
Gracias y saludos

Responder