Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - NikNitro!

#241
Es fácil de averiguar. Sal a la calle y regalale todos tus bienes a alguien desconocido. Si se pueden enviar mensajes en el tiempo, te enviarán uno puteandote o diciendote que no lo hagas xD

Salud
#242
Necesitas ayuda? Pues te la daré. Mis consejos son:
1º que edites el título y pongas algo que describa mejor tu problema.
2º que nos muestres lo que llevas hecho para que podamos aconsejarte mejor.

Salud;)
#243
Ok. El fallo estaba únicamente en que cuando acababa una conexion cerraba el serverSocket y luego creaba uno nuevo. He puesto el constructor del serverSocket en el constructor de Servidor y le he quitado el .close().

Si alguien necesita el código completo que me lo pida. De todos modos a partir del día 8 (que es cuando entrego la práctica) lo subiré a mi blog ;)
#244
Mmm, perdón por la tardanza en la respuesta, pero quería responder con 'sustancia'.

Lo de los hilos no es lo que busco. Te explico:

El constructor de serverSocket que estoy usando es al que se le pasa un int que es el puerto, pero existe otro constructor tal que así:
new ServerSocket(int port, int backlog);

backlog indica el número de conexiones en espera que puede tener a la vez. Con el que yo estoy usando se usa como predeterminado el número 20 (o 50, ahora mismo no lo recuerdo bien).

Esto significa que la cola de conexiones está creada y, sin embargo, cuando cierro una conexion se me cierran todas las de la cola (todas van al mismo puerto y al cerrar el socket se cierran todas).

Total, si comento el close del serverSocket, cuando cierro la conexion desde el cliente me empiezan a dar una exageración de Throws en el receiveMessage().

Qué pensais que estoy haciendo mal? :s

Salud
#245
Java / Re: Problema login usuarios
26 Mayo 2014, 18:57 PM
Has probado con un try catch o un do while?
#246
Buenas, no estaba seguro de que preguntas de programación fueran en Redes, por lo que lo puse aquí.

Tengo un servidor que recibe conexiones de socket. Solo puede procesar una a la vez, pero quiero que si un segundo cliente intenta conectarse espere hasta que pueda. Había pensado hacerlo con una cola, pero no se "qué meter" dentro de la cola.

Aquí el code de mi Servidor:
Código (java) [Seleccionar]

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;


public class Servidor extends Thread{

private int port;
private ServerSocket server;
private Socket sck;

public Servidor() {
port = 5000;

}
public Servidor(int i) {
port = i;

}

public boolean Connect() {
try {

server = new ServerSocket(port);
System.out.println("Servidor esperando conexión.");
sck = server.accept();

return true;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("Error con la conexión");
return false;
}

}

public boolean Disconnect() {
try {

sck.close();
server.close();

return true;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("Error al desconectar");
return false;
}

}

public boolean receiveMensaje() {
try {
PrintWriter printer = new PrintWriter(sck.getOutputStream(), true);
BufferedReader reader = new BufferedReader(new InputStreamReader(sck.getInputStream()));

System.out.println("Esperando Mensaje...");

sck.setSoTimeout(40*1000);
String mensaje = reader.readLine();
while(sck.isConnected() && !mensaje.equals("FIN")) {

System.out.println("Recibido: "+mensaje);
if(!mensaje.equals("FIN")) {

printer.println(mensaje.toUpperCase());
mensaje = reader.readLine();

}
}


// System.out.println("Server apagandose");
this.Disconnect();

return true;
} catch (IOException e) {
System.out.println("Error: Compruebe su conexion o que no ha estado más de 40 segundos inactivo.");
Disconnect();
return false;
}
}

public void run() {
while(true) {
Connect();
receiveMensaje();
}
}


public static void main(String[] args) {
// TODO Auto-generated method stub
Servidor sv = new Servidor();
// Servidor sv = new Servidor(Integer.parseInt(args[0]));
sv.run(); // Porque no necesita ser concurrente.
}


Como veis, la conexion no es más que un 'Socket sck = ServerSocket.accept()"

Entonces cómo podría hacerlo?

Salud ;)
#247
En este caso no es aún un chat, sino más bien un servidor de eco (el cliente se conecta, le envía algo al servidor y éste le responde).

Yo puedo cojer y ejecutar el Servidor, luego el Cliente (con ip 127.0.0.1 y el mismo puerto) y que funcione (y estarán en diferentes consolas). Mi pregunta es si puedo hacer que aparezcan en diferentes consolas ejecutando un solo programa).

(Una consola será el Servidor y la otra el Cliente).

Salud
#248
Buenas, he estado buscando (aunque tampoco se como llamarlo exactamente) la posibilidad de que un main abra dos consolas distintas.

Os explico, practicando con UDP he medio programado un chat. Esta es la interfaz primaria:
Código (java) [Seleccionar]

public class Chat {
private Cliente  cl;
private Servidor sv;

public Chat() {
cl = new Cliente();
sv = new Servidor();
}

public Chat(String ipServ, int puertSend, int puertRec) {
cl = new Cliente(ipServ, puertSend);
sv = new Servidor(puertRec);
}

public void Arrancar() {
sv.Connect();
cl.Connect();
}

public static void main(String[] args) {
// TODO Auto-generated method stub
Chat chat = new Chat();
chat.Arrancar();
}

}



Pues bueno, en la consola me aparece el servidor conectando, pero no puede conectar. He pensado hacerlo concurrente, pero mi duda es si hay alguna forma de ejecutar cada trozo en una consola diferente (se que puedo llamarlos por separado, pero quiero saber si se puede).

Saludos ;)

EDITO: Aquí tengo el code en una concurrencia básica:
Código (java) [Seleccionar]

public class Chat {
private Cliente  cl;
private Servidor sv;

public Chat() {
cl = new Cliente();
sv = new Servidor();
//////////////////////////////////////////////
Arrancar();
/////////////////////////////////////////////
}

public Chat(String ipServ, int puertSend, int puertRec) {
cl = new Cliente(ipServ, puertSend);
sv = new Servidor(puertRec);
}

////////////////////////////////////////////////////// Procedimiento Arrancar() cambiado entero
public void Arrancar() {
sv.start();
cl.start();

try {
sv.join();
cl.join();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

public static void main(String[] args) {
// TODO Auto-generated method stub
new Chat();
}

}

#250
100% de acuerdo contigo t0uRett3. Además, eso de "3.- Más difíciles de vender" es mentira. Actualmente te encuentras con ventas de nexus 4 de 8Gb que valen más caros de segunda mano que cuando se vendían nuevos. La gente los quiere.

Además, el Nexus 5 se lo ha comprado mi amigo en una tienda Yoigo, por lo que lo de que no puedes comprarlo en una tienda.. xD

Yo estoy contentísimo con mi Nexus 4 y cada vez le voy cogiendo más asco a los Samsung... (por lo que veo en la gente que me rodea, decenas de fallos con S3 y S4)

Salud