Dae pessoal,
Seguente, estou com um problema.
Estou tentando fazer um jogo via socket, thread, para que usuarios se conectem ao servidor e quando o cliente se conecta pede para digitar o nome e um numero. o Sistema gera um numero rondamico e compara com o que o cliente digitou e mostra a diferença.
O que eu queria fazer é que armazene num arquivo.obj o nome e o numero dos clientes e comparece com o numero rondamico que o sistema gerou, salvasse em arquivo os 5 que mais se aproximasse desse numero rondamico e depois mostrasse um ranking.
abaixo mando as classes implementadas.
Classe cliente
view plaincopy to clipboardprint?
package trabalho;
import java.awt.List;
import java.io.IOException;
import java.io.PrintStream;
import java.net.Socket;
import javax.swing.JOptionPane;
public class Cliente {
public static void main(String args[]) {
try {
Socket conexao = new Socket("127.0.0.1", 2222);
PrintStream saida = new
PrintStream(conexao.getOutputStream());
String meuNome=JOptionPane.showInputDialog("Entre com o seu nome");
saida.println(meuNome);
String meuNumero=JOptionPane.showInputDialog("Digite o seu numero entre 1 e 50");
// saida.println(meuNumero);
saida.println(meuNumero);
Thread t = new ThreadCliente(conexao);
t.start();
}
catch (IOException e) {
System.out.println("IOException: " + e);
}
}
}
Classe Servidor
package trabalho;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Vector;
public class Servidor {
private static Vector clientes;
public static void main(String args[])
{
clientes = new Vector();
try
{
ServerSocket s = new ServerSocket(2222);
while (true)
{
System.out.print("Esperando alguem se conectar...");
Socket conexao = s.accept();
System.out.println(" Conectou!");
Thread t = new ThreadServidor(conexao, clientes);
t.start();
}
}
catch (IOException e)
{
System.out.println("IOException: " + e);
}
}
}
Classe ThreadCliente
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Vector;
public class Servidor {
private static Vector clientes;
public static void main(String args[])
{
clientes = new Vector();
try
{
ServerSocket s = new ServerSocket(2222);
while (true)
{
System.out.print("Esperando alguem se conectar...");
Socket conexao = s.accept();
System.out.println(" Conectou!");
Thread t = new ThreadServidor(conexao, clientes);
t.start();
}
}
catch (IOException e)
{
System.out.println("IOException: " + e);
}
}
}
Classe ThreadServidor
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;
import java.util.Vector;
public class ThreadServidor extends Thread {
protected static Vector clientes;
protected static Socket conexao;
public static String meuNome;
public static String meuNumero;
private int num=0;
protected static int dif = 0;
public ThreadServidor(Socket s, Vector clientes)
{
this.conexao = s;
this.clientes = clientes;
}
public void run(){
try
{
num = ((int) ( Math.random() * 49 ))+1;
BufferedReader entrada = new BufferedReader(new InputStreamReader(conexao.getInputStream()));
PrintStream saida = new PrintStream(conexao.getOutputStream());
meuNome = entrada.readLine();
meuNumero = entrada.readLine();
System.out.println("nome é: " + meuNome);
int Xnum = Integer.parseInt(meuNumero);
if (meuNome == null)
{
return;
}
if (Xnum == 0)
{
return;
}
System.out.println("num é: " + meuNumero);
dif = num - Xnum;
System.out.println("Random3 é: " + num);
System.out.println("Diferença é: " + dif);
clientes.add(saida);
}
catch (IOException e)
{
System.out.println("IOException: " + e);
}
}
Segue mais uma que é a classe gravar. O que não to conseguindo e salvar no arquivo o nome, numero do cinco que mais se aproximaram do rondamico e mostra um ranking
Classe Gravar
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.List;
public class Gravar {
public void gravar(List lista) {
try {
FileOutputStream fos = new FileOutputStream( "D:\\Eclipse\\Rondomico\\trabalho\\arquivo.obj" );
ObjectOutputStream outStream = new ObjectOutputStream( fos );
outStream.writeObject( lista );
outStream.flush();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public List ler() {
List object = null;
try {
FileInputStream fis = new FileInputStream( "D:\\Eclipse\\Rondomico\\trabalho\\arquivo.obj" );
ObjectInputStream inStream = new ObjectInputStream( fis );
object = ( List )inStream.readObject();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return object;
}
}
Pow se alguem puder me ajudar valeu mesmo. Sei que so tem fera aqui que pode me dar uma força.
Valeu ai galera
Abraço
SkFogo