Делаю для себя приложение "Чат". Есть сервер на php, работает на сокетах. Сейчас мое приложение может отправить сообщение, либо принять сообщение. Т.е. я нажимаю на кнопку, в новом потоке:
1. Подключение к сокет серверу.
2. Стартует отправка, либо прием данных.
Как организовать так, чтобы соединение держалось постоянно?
1. При старте приложения подключиться к сокет-серверу и сохранить идентификатор сокета в переменную
2. Принимать/передавать данные по мере поступления
3 ....
4. При выходе из приложения закрыть сокет.
Эмм... Почитайте мануал по сокетам - там все это расписано и даже с примерами. Делается очень просто - есть специальная функция для ожидания и чтения данных из сокета и есть специальная функция для записи. Когда надо - читаем, когда надо - записываем. Какие тут вообще могут быть сложности-то?
Она называется Read или SocketRead - в зависимости от ЯП/контекста и т.п. Логика работы на разных ОС практически не отличается. Есть некоторые небольшие различия, но в целом логика одинаковая. Для записи - Write/SocketWrite. В любом мануале по сокетам это все есть и расписано. Если там этого нету - значит, это не мануал по сокетам.
я знаю как читать/писать. Сейчас у меня приложение либо читает, либо пишет. Если точнее, то я начинаю читать, а отправить данные уже не могу, т.к. сокет занят.
Что значит "сокет занят"? Сокет - это системный идентификатор, он допускает асинхронные операции. Т.е., можно одновременно записывать и читать. Кроме того, существуют синхронные и асинхронные вызовы для чтения и записи.