Cliente
helloApp.swift
1 2 3 4 5 6 7 8 9 10 |
import SwiftUI @main struct helloApp: App { var body: some Scene { WindowGroup { ContentView() } } } |
ContentView.swift
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
import SwiftUI import Foundation struct ContentView: View { let serverAddress = "192.168.0.14" let serverPort = 8080 let messageToSend = "Hello, TCP!" var body: some View { VStack { Button("Enviar Mensaje") { sendMessage() } .padding() .foregroundColor(.white) .background(Color.blue) .cornerRadius(8) } .padding() } func sendMessage() { var inputStream: InputStream? var outputStream: OutputStream? Stream.getStreamsToHost(withName: serverAddress, port: serverPort, inputStream: &inputStream, outputStream: &outputStream) guard let inputStreamUnwrapped = inputStream, let outputStreamUnwrapped = outputStream else { print("Error al establecer la conexión") return } inputStreamUnwrapped.open() outputStreamUnwrapped.open() let data = messageToSend.data(using: .utf8)! let bytesWritten = outputStreamUnwrapped.write((data as NSData).bytes.bindMemory(to: UInt8.self, capacity: data.count), maxLength: data.count) if bytesWritten > 0 { print("Mensaje enviado con éxito") } else { print("Error al enviar el mensaje") } inputStreamUnwrapped.close() outputStreamUnwrapped.close() } } struct ContentView_Previews: PreviewProvider { static var previews: some View { ContentView() } } |

Servidor
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
import java.net.InetAddress import java.net.ServerSocket import java.io.BufferedReader import java.io.InputStreamReader fun main() { val puerto = 8080 // Puerto del servidor try { val inetAddress: InetAddress = InetAddress.getByName("192.168.0.14") val servidor = ServerSocket(puerto, 8080, inetAddress) println("Escuchando en ${servidor.localPort}") while (true) { val cliente = servidor.accept() val inputStream = cliente.getInputStream() val bufferedReader = BufferedReader(InputStreamReader(inputStream)) val mensajeRecibido = bufferedReader.readLine() println("Mensaje recibido del cliente ${cliente.inetAddress.hostAddress}:${cliente.port}: $mensajeRecibido") bufferedReader.close() cliente.close() } // servidor.close() // No alcanzable con el ciclo while(true) } catch (e: Exception) { e.printStackTrace() } } |
