Servidor
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
import io.ktor.application.* import io.ktor.http.HttpStatusCode import io.ktor.request.receiveText import io.ktor.response.respond import io.ktor.routing.post import io.ktor.routing.routing import io.ktor.server.engine.embeddedServer import io.ktor.server.netty.Netty fun main() { val server = embeddedServer(Netty, port = 6000) { routing { post("/send-message") { val receivedMessage = call.receiveText() println("Mensaje recibido: $receivedMessage") call.respond(HttpStatusCode.OK, "Mensaje recibido: $receivedMessage") } } } server.start(wait = true) } |
Este código es un servidor web básico creado con Ktor, un framework web en Kotlin. Aquí hay una explicación línea por línea:
import
– Importa las clases necesarias de las bibliotecas de Ktor para manejar las solicitudes y respuestas HTTP.fun main()
– La función principal donde comienza la ejecución del servidor.val server = embeddedServer(Netty, port = 6000)
– Crea una instancia de un servidor Ktor utilizando el motor Netty (uno de los motores admitidos por Ktor) que escucha en el puerto 6000.routing { }
– Define el enrutamiento para manejar las diferentes rutas de la solicitud.post("/send-message") { }
– Maneja las solicitudes POST enviadas al servidor en la ruta «/send-message».val receivedMessage = call.receiveText()
– Lee el cuerpo del mensaje recibido en la solicitud POST y lo almacena en la variablereceivedMessage
.println("Mensaje recibido: $receivedMessage")
– Imprime en la consola el mensaje recibido desde la solicitud POST.call.respond(HttpStatusCode.OK, "Mensaje recibido: $receivedMessage")
– Responde a la solicitud con un código de estado HTTP 200 (OK) y envía de vuelta el mensaje recibido como respuesta.server.start(wait = true)
– Inicia el servidor, haciendo que escuche las solicitudes entrantes. El parámetrowait = true
indica que el hilo principal esperará hasta que el servidor se detenga antes de salir.
En resumen, este código establece un servidor web simple que acepta solicitudes POST en la ruta «/send-message», lee el cuerpo de la solicitud y responde con el mensaje recibido junto con un código de estado 200.
Cliente
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
import io.ktor.client.* import io.ktor.client.request.* suspend fun sendMessage() { val client = HttpClient() val url = "http://192.168.1.55:6000/send-message" // Reemplaza con la URL de tu servidor try { val response = client.post<String>(url) { body = "Hola, servidor!" } println("Respuesta del servidor: $response") } catch (e: Exception) { println("Error al enviar el mensaje: ${e.message}") } finally { client.close() } } // Llama a la función para enviar el mensaje suspend fun main() { sendMessage() } |
Este código en Kotlin utiliza Ktor para enviar una solicitud POST a un servidor remoto. Aquí está la explicación línea por línea:
import
– Importa las clases necesarias de la biblioteca Ktor para el cliente HTTP.suspend fun sendMessage()
– Esta función suspendida envía un mensaje al servidor.val client = HttpClient()
– Crea una instancia del cliente HTTP de Ktor.val url = "http://192.168.1.55:6000/send-message"
– Define la URL del servidor al que se enviará la solicitud POST.try { ... } catch (e: Exception) { ... } finally { ... }
– Bloque try-catch-finally para manejar la solicitud HTTP y cerrar el cliente después de su uso.val response = client.post<String>(url) { body = "Hola, servidor!" }
– Envía una solicitud POST al servidor definido enurl
. La funciónpost
de Ktor realiza una solicitud POST y espera una respuesta de tipoString
. En este caso, se envía el cuerpo del mensaje"Hola, servidor!"
.println("Respuesta del servidor: $response")
– Imprime la respuesta del servidor en la consola.println("Error al enviar el mensaje: ${e.message}")
– Si ocurre un error al enviar la solicitud, imprime un mensaje de error con la descripción del error.client.close()
– Cierra el cliente HTTP después de completar la solicitud.suspend fun main() { sendMessage() }
– La función principal que llama asendMessage()
para enviar el mensaje al servidor cuando se ejecuta el programa.
En resumen, este código define una función sendMessage()
que utiliza el cliente HTTP de Ktor para enviar una solicitud POST con un mensaje al servidor especificado por la URL. Luego, en la función principal main()
, se llama a sendMessage()
para enviar el mensaje cuando se inicia el programa.