Доброго времени суток. Я разрабатываю приложение под Андроид, которое будет взаимодействовать с сервером через сокеты. И появился вопрос: как правильно хранить объект сокета? Нужно ли его пересоздавать при каждом запросе или открывать лишь при запуске приложения? Тогда как получить доступ к нему из любого места приложения? Через синглтон? Но тогда как его сделать с параметрами? Вопросов больше чем ответов. Может, кто сталкивался с таким в своих приложениях?
Еще как сталкивался. Если требуется надежность, т е работа не в локалке, а по интернету, и LAN-кабель не забетонирован вместе с разъемом и роутером и поэтому могут быть обрывы, то это реальным гроссмейстером надо быть чтобы нормально получилось весь этот жизненный цикл реализовать со всеми try-catch. :) Пожалуй тут даже на Си удобнее, чем на джавах и шарпах, этот try-catch реально нифига не кстати ибо нифига не гибок и получается hell, сишный вариант типа if (result != NULL) гораздо гибче. А все что нужно, типа работы со строками, чтобы код не раздувало, это можно и на си быстренько наделать функций или классов.
Лучше конечно сеансово: создал сокет - отправил запрос - получил ответ - если ошибка то повторил - закрыл сокет. Тогда намного легче и нет такого жуткого спагетти, но тогда зачем TCP, есть прекрасный HTTP, можно Long-polling.
Денис Загаевский: На "сервере" приложение десктопное. Его частью является небольшой сервер на сокетах, который при разных входных данных показывает определенные окна в gui. Поэтому я слабо представляю, как связать графический интерфейс с каким нибудь rest фреймворком
Можно использовать Service который будет создавать экземпляр класса сокета и работать в фоновом режиме, а уже из других классов можно будет получить сервис.