PDA

Ver la Versión Completa : ServerSocket se cierra al acabar.


MorSerNa
29/04/15, 08:08:26
Tengo un servidor que recibe una imagen y la guarda en el escritorio por socket. Lo que pasa que al recibir 1 imagen, se me cierra el programa entero. ¿Como puedo hacer que siga funcionando?

http://i.gyazo.com/18e4b8f1a9dc445ea00e41d885140298.png


Abajo, al recibir la imagen , el socket se cierra, pero no quiero (T-T) (T-T)

mocelet
29/04/15, 10:36:34
Se te cierra porque el programa acaba, si quieres que espere la recepción de otra imagen tienes que volver a hacer socket.accept(), que bloqueará la ejecución hasta que haya otra petición.

Con poner un while(true){ } que encierre todo a partir de, e incluyendo, Socket sock=socket.accept() te vale.

P.D: La fecha también tendrás que actualizarla dentro del bucle, o si no siempre escribirá el mismo fichero. Que, por cierto, si te mandan dos imágenes en el mismo segundo, se sobreescribirán porque el fichero tiene el mismo nombre.

MorSerNa
29/04/15, 12:11:00
Que encierre todo a partir de donde? Hasta el socket.accept

mocelet
29/04/15, 14:37:21
main(...){
[...]
ServerSocket socket = new ServerSocket(...)
while(true){
Socket sock = socket.accept();
date = new Date();
[... el resto igual...]
}
}

En otras palabras, el código de aceptar una conexión entrante y procesar la subida del fichero se repetirá infinitamente hasta que cierres el programa o salte una excepción.

MorSerNa
29/04/15, 16:51:05
main(...){
[...]
ServerSocket socket = new ServerSocket(...)
while(true){
Socket sock = socket.accept();
date = new Date();
[... el resto igual...]
}
}En otras palabras, el código de aceptar una conexión entrante y procesar la subida del fichero se repetirá infinitamente hasta que cierres el programa o salte una excepción.


Gracias ^^^^^^

No me funciona lo de actualizar la fecha dentro del while.
Pense que seria date.update o algo asi :risitas::risitas:

MorSerNa
30/04/15, 00:48:23
Solucionado : metí el date = new date(); de nuevo en el bucle.

Muchas gracias moce ^^