Acerca de la solución de desconexión Qt tcpsocket

1 protocolo tcpip

No hay mucho que decir. Afirma garantizar que la transmisión sea precisa y confiable, y que la misión se logrará. El protocolo es un gran desastre y rara vez se utiliza en aplicaciones prácticas.

2 El problema

Después de usar el protocolo tcp para conectarme al servidor (probé el módulo de comunicación del sistema windows y el microcontrolador del sistema ubuntu con el protocolo tcpip), encontré que la retroalimentación no podía ser oportuna o la red estaba desconectada; (era lo mismo en la misma LAN y en la red pública. Al principio me pregunté si podría haber un problema con el controlador de la tarjeta de red del sistema Ubuntu, pero luego descubrí que lo mismo ocurría con el sistema Windows, que estaba conectado vía wifi) . Al final, sólo podemos decir si el enrutamiento no es en tiempo real.

3 soluciones

Según la documentación de Qt, es prueba y error, y se han utilizado varios métodos; no importa cómo desconecte el cable de red, la clase tcpsocket de Qt aún no encuentra que la red está desconectada y el envío sigue siendo normal. (Pensé que esta clase de Qt sería mejor que la clase TCP IP general. Es solo una vista panorámica. En cuanto a la opción keepalive, el cambio de estado no está disponible. ¿Muchos servidores TCP también necesitarán usar la opción keepalive para que sea efectivo? ? En el futuro Pruébelo si tiene tiempo); ahora hay dos soluciones: 1) Utilice el método del paquete de latidos; envíe la respuesta del servidor una vez por segundo; consume recursos de la CPU; 2) (recomendado) detecte socket_send(qbytedata msg) en su propia función de envío El estado de qtcpsocket, si el estado no está conectado, vuelva a conectarse, porque el cambio de estado aquí solo tendrá efecto después de que el servidor de la IP de destino esté conectado a la ruta (desconectar o desconectar no tendrá efecto ).

Supongo que te gusta

Origin blog.csdn.net/jb_mai/article/details/124986953
Recomendado
Clasificación