Я узнал пример использования сокетов. В этом примере клиент отправляет запрос на сервер, чтобы открыть сокет, а затем сервер (прослушивая определенный порт) открывает сокет, и все в порядке, сокет «открывается» с обеих сторон (клиент и сервер).
Но мне все еще неясно, насколько гибок этот материал. Например, может ли клиент закрыть открытый (с обоих концов) сокет и снова открыть его (при условии, что сервер сохраняет сокет открытым).
Возможно ли, чтобы сервер "знал", что сокет был закрыт на стороне клиента? Может ли клиент знать, что сокет был закрыт на стороне сервера?
ДОБАВЛЕНО:
Еще одна важная вещь для меня. Что произойдет, если приложение (без основного сервера или клиента) аварийно завершит работу, будет аварийно завершено, убито? Будут ли закрыты все сокеты, открытые на стороне приложения?
ДОБАВЛЕНО 2:
Что, если приложение на одной стороне сокета выключено (уничтожено, закрыто, завершено), а затем снова включено (на тот же IP-адрес и тот же порт). Должны ли мы создать новый сокет между двумя приложениями или мы можем использовать старый сокет (созданный до сбоя).