java - servidor - socket io server
Enviar mensaje desde un servidor básico a un cliente específico (1)
Sí, es posible. Debe mantener una conexión separada con cada cliente. La clase ServerSocket
tiene una función accept()
que devuelve un objeto Socket
. Ese objeto representa una conexión entre dos puntos, su servidor y un cliente. Puede llamar ServerSocket.accept()
varias veces en un bucle para aceptar todas las conexiones entrantes. Cada objeto Socket
devuelto será para un cliente diferente.
Para que el servidor envíe un mensaje a un cliente específico, necesitará saber qué socket pertenece a cada cliente, por lo que los clientes deberán enviar un mensaje al servidor que los identifique y el servidor deberá leer e interpretar. ese mensaje. Luego puede responder con la respuesta adecuada para ese cliente específico.
Publique su código si todavía tiene problemas.
ACTUALIZA porque agregaste el código a la pregunta: consulta la documentación de Android sobre cómo crear subprocesos. Eso será una gran cantidad de lectura más allá de esta publicación en stackoverflow.
En cuanto a aceptar conexiones y comenzar hilos, simplemente hazlo en un bucle:
for(int i = 0; i<5; i++){
clientSocket = serverSocket.accept();
// start a new thread, passing it the clientSocket as an argument
}
Otros enlaces posiblemente útiles: https://developer.android.com/resources/articles/painless-threading.html https://developer.android.com/guide/topics/fundamentals/processes-and-threads.html
Tengo dos módulos wifi M1 y M2 que se conectan a mi punto de acceso. Tengo un teléfono Android que se conecta al mismo punto de acceso. Tengo un servidor de socket en mi teléfono Android y los dos módulos se unen al servidor como clientes. Ahora mi pregunta es, ¿es posible enviar un mensaje de cadena desde mi teléfono al módulo M1 sin tener que enviar nada a M2? Quiero elegir entre los clientes para enviar el mensaje a. ¿Es posible en Java?
Ok, aquí va.
//setting up server
ServerSocket serverSocket = new ServerSocket(8000, 0, IPaddress);
//creating a client socket to accept it
Socket clientSocket = serverSocket.accept();
Ahora, acepto el cliente en un hilo separado para que el hilo principal no se congele porque la función accept()
está bloqueando.
No sé cómo crear un nuevo hilo cada vez que un nuevo cliente se conecta. Además, no sé cómo limitar la cantidad de clientes que pueden conectarse. Necesito como máximo 5 clientes y no más.