Paso 2: sobre el programa
Creo que el código es auto contiene suficiente comentario para que aquellos con algunas habilidades de programación por lo menos pueden entender el flujo de todo el programa, si no todo el código, pero sólo para añadir una visión más clara
En primer lugar comencé un nuevo hilo que se ejecuta la función tcpConnect(), esta función intentará conectarse al puerto 5445 (me encanta este puerto) en el mismo equipo, la IP y puerto puede ser cambiado por el usuario, como socket.connect función producirá una excepción si la conexión falla, utilicé un intento salvo la to forma un método de reintento de conexión , por lo que el hilo se lazo hasta que la conexión se establece, entonces establecerá indicadores adecuados y comienza un nuevo hilo que se encarga de leer del socket, el hilo llamará a una función de devolución de llamada definido por el usuario cuando detecta una línea completa de datos termina con \r\n,
por ahora y en este proyecto sólo imprimimos los datos recibidos,
También implementó una clase timer que era responsable de llamar a una función de callback de tiempo de espera definido por el usuario en un intervalo especificado de usuario normal, en este tiempo de espera de devolución de llamada incrementan dos banderas HBCounter y HBSent, estas banderas se utilizan para identificar cuánto tiempo la red ha sido en ambos directions,i.e. de servidor a cliente y el cliente al servidor, usted puede preguntar ¿por qué necesitamos dos? porque queremos garantizar que la conexión es para arriba y saludable, y TCP a comprobarlo por defecto después de decir dos horas de inactividad, que es bastante tiempo, para que usar este mecanismo para reducir este tiempo a un valor aceptable,
Puede quitar el contador de tiempo para propósitos de la prueba, pero para tener un mayor nivel de fiabilidad que usted debe usar el temporizador, si el servidor que utiliza debe ser capaz de enviar paquetes de latido del corazón al cliente o el cliente caerá la conexión y establece una nueva uno después de que el temporizador de algunos basado en condición en el código se cumple ,