Aprendí un ejemplo de uso de sockets. En este ejemplo, un cliente envía una solicitud a un servidor para abrir un socket y luego el servidor (escuchando un puerto específico) abre un socket y todo está bien, el socket se "abre" desde ambos lados (cliente y servidor).¿Puedo cerrar y volver a abrir un socket?
Pero todavía no está claro para mí qué tan flexible es esto. Por ejemplo, es posible que el cliente cierre un socket abierto (desde ambos extremos) y lo vuelva a abrir (bajo la condición de que el servidor mantenga el socket abierto).
¿Es posible que el servidor "sepa" que un socket está cerrado en el lado del cliente? ¿Es posible que el cliente sepa que un socket está cerrado en el lado del servidor?
añadido:
Una cosa más importante para mí. ¿Qué sucede si una aplicación (sin servidor principal o cliente) falla, termina anormalmente, muere? ¿Cerrará todos los enchufes abiertos en el lado de la aplicación?
añadió 2:
¿Qué pasa si una aplicación en un lado de la toma de corriente está apagada (mató, cerrado, terminado) y entonces se conecta de nuevo (en la misma dirección de IP y el mismo puerto) ¿Deberíamos crear un nuevo socket entre las dos aplicaciones o podemos usar el antiguo socket (creado antes del bloqueo)?
No entiendo el procedimiento. Por ejemplo, el cliente cierra el socket y el servidor no lo hace. El cliente intenta abrir un nuevo socket (desde el mismo puerto y la misma dirección IP) pero el servidor dice: "Lo siento, es imposible ya que ese socket ya existe". Y luego el cliente dice: bueno, existe para ti, pero lo cerré y no puedo volver a abrirlo. – Roman
El servidor debe procesar sockets en diferentes subprocesos. No debería ser un problema abrir tomas (es decir, aceptar) en el mismo puerto. – Roman
ah, qué lío feo con apodos. – Roman