Red de conocimiento informático - Aprendizaje de programación - Manejo de excepciones comunes de Java Socket

Manejo de excepciones comunes de Java Socket

Las siguientes excepciones se encuentran generalmente en la programación de redes Java Comunicación de socket

La primera excepción es BindException: Dirección ya en uso: JVM_Bind

Esta excepción ocurre El motivo La excepción al realizar la nueva operación ServerSocket(puerto) (el puerto es un valor entero) en el lado del servidor es que se cree que se ha iniciado y monitoreado un puerto igual que el puerto. En este momento, puede ver un estado de escucha. usando el comando netstat un puerto solo necesita encontrar un puerto desocupado para resolver el problema

La primera excepción es ConnectException: Conexión rechazada: conectar

Esta excepción ocurre cuando el cliente realiza. nuevo Socket (La razón por la cual ocurre esta excepción cuando se opera el puerto IP) es que no se puede encontrar la máquina con la dirección IP (es decir, la ruta desde la máquina actual a la IP especificada no existe) o la IP existe pero la El puerto especificado no se puede encontrar para monitorear. Este problema ocurre primero verifique si la IP y el puerto del cliente están escritos correctamente. Si son correctos, haga ping al servidor desde el cliente para ver si se puede hacer ping. el ping está deshabilitado en el lado del servidor, se necesita otro método). Luego verifique el puerto especificado de escucha en el lado del servidor. Si el programa se inicia definitivamente resolverá este problema. La primera excepción es SocketException: Socket está cerrado

Esta excepción puede ocurrir tanto en el cliente como en el servidor. La razón es que después de que el extremo local cierra activamente la conexión (llamando al método de cierre de Socket). luego realiza operaciones de lectura y escritura en la conexión de red

La primera excepción es SocketException: (Restablecimiento de conexión o restablecimiento de conexión por par: error de escritura de socket)

Esta excepción puede ocurrir tanto en el cliente y el servidor Hay dos razones para esta excepción. La primera es si el socket en un extremo está cerrado (o activamente cerrado o causado por una salida anormal). El otro extremo todavía está enviando datos. lanza esta excepción (Restablecimiento de conexión por parte del par). El otro extremo es que un extremo sale pero no cierra la conexión al salir. Si el otro extremo está leyendo datos de la conexión, se lanza esta excepción (reinicio de conexión). es causado por las operaciones de lectura y escritura después de que se desconecta la conexión

La primera excepción es SocketException: tubería rota

Esta excepción ocurre tanto en el cliente como en el servidor. en el primer caso de excepción (es decir, después de SocketExcepton: restablecimiento de conexión por parte del par: se genera un error de escritura de socket. Si continúa escribiendo datos, se generará la excepción. La solución a las dos primeras excepciones es asegurarse primero). Cierre todas las conexiones de red antes de salir del programa. El segundo paso es detectar la operación de cierre de la conexión de la otra parte y descubrir que la otra parte ha cerrado la conexión. Si descubre que la otra parte ha cerrado la conexión, también debe cerrar la conexión.

2. Cuestiones a las que se debe prestar atención al escribir programas de red:

Es necesario distinguir correctamente entre conexiones largas y cortas. La llamada conexión larga se refiere a la situación en la que una conexión corta se mantiene permanentemente una vez. establecido Preparar datos-gt; establecer conexión-gt; enviar datos —gt; Los programadores que han cerrado muchas conexiones y han escrito programas de red durante muchos años en realidad no saben qué es una conexión larga y qué es una conexión corta. >

El llamado mantenimiento incluye el mantenimiento de conexiones largas.

Los dos aspectos son: primero, detectar la desconexión activa de la otra parte (es decir, llamar al método de cierre de Socket); segundo, detectar el tiempo de inactividad, la salida anormal y la falla de la red de la otra parte. Esto es imprescindible para un programa de comunicación sólido. La desconexión activa de la otra parte es muy simple. Si una parte se desconecta activamente y la otra parte está realizando una operación de lectura, el valor de retorno en este momento solo se utilizará una vez que se detecte que la otra parte está desconectada y la conexión local. cerrado activamente (llame al método de cierre del Socket), y se debe detectar el tiempo de inactividad de la otra parte y la salida anormal y la anomalía de la red. El método consiste en utilizar latidos, es decir, ambas partes se envían datos periódicamente entre sí y también reciben latidos del otro. Si el latido del corazón de la otra parte no se recibe durante varios ciclos consecutivos, se puede juzgar que la otra parte se bloqueó y salió de manera anormal o que la red no está disponible. una conexión de cliente, puede reiniciar la conexión después de un cierto período de retraso. Aunque Socket tiene una opción de mantener vivo para mantener la conexión, generalmente toma dos horas descubrir que la otra parte falló y salió de manera anormal. y la red no está disponible lishixinzhi/Article/program /Java/hx/201311/26630