Извините, я довольно быстро прочитал вопрос. Да, я бы оставил сокет открытым, если он находится на локальной машине. Нет смысла открывать и закрывать каждую память, которая должна быть выделена. Шлифование вперед и назад не поможет в этом случае.
Просто я правильно понимаю, что вы пишете приложение сервера Какао, которое прослушивает соединение, чтобы оно могло передавать некоторые данные в приложение Java, которое не имеет доступа к информации, возвращаемой из API Какао?
Вы уверены, что не можете просто получить результаты от команды терминала в Java. Я полностью догадываюсь, но я подумал, что в этом случае вы могли бы улучшить то, что вы планируете делать.