Покинул форум
Сообщений всего: 8
Дата рег-ции: Июль 2011
Помог: 0 раз(а)
Задача:
1.Подсоединиться к серверу на указанный порт (соединение ssl приветствуется).
2. Послать сообщение на сервер.
3. Получить ответ.
4. Оставить соединение открытым, т.к. сервер через некоторое (неопределенное время от 1секунды до 10 минут) начинает высылать сообщения.
5. Получить все сообщения, расшифровать.
6. Отправить ответ, что сообщения получены. Всем спасибо.
7. Закрыть соединение.
И дальше начинаются проблемы (( Чтоб не закрывать соединение я не делаю fclose($fp); Но и не получаю ничего (( Есть ли какие-либо идеи, что можно сделать, чтоб решить задачу? Может как-то можно обновлять соединение, когда с сервера отправляются данные?
Как я понял, сокет работает так: Сервер - клиент. На серверной части работает слушатель, который реагирует на запросы клиента. Но как заставить клиента среагировать на передачу данных с сервера?
В голову приходит идея сделать так:
Покинул форум
Сообщений всего: 8
Дата рег-ции: Июль 2011
Помог: 0 раз(а)
Помогите разрешить проблему:
в телнете задаю коннект - соединяется с сервером по заданному порту. При отсылке сообщения, получаю ответ.
А как это описать в ПХП?
sphinks
Отправлено: 17 Августа, 2011 - 18:52:40
Новичок
Покинул форум
Сообщений всего: 8
Дата рег-ции: Июль 2011
Помог: 0 раз(а)
Хе, спасибо всем за помощь. Хорошо, пальцы, клавиатура и инет работают.
Итак, вот реализация клиента для подключения к серверу
осталось теперь найти способ прослушивать все ответы от сервера. Т.к. информация поступает не переодично. Т.е. запрос на сервер ушел, ответ пришел. Потом через 2-3 минуты еще ответ от сервера. Как эти ответы отловить? Может кто поможет?
Мне бы как-нть зациклить, чтоб ответ читало, пока есть соединение. Пытался зациклить, клинит браузер. Помогите плиз!!!
примечание если вам надо отлов 24/7 то ставим set_time_limit(0); если к примеру до 10 минут то set_time_limit(600); думаю алгоритм понятен) еще 1 при set_time_limit(0); скрипт может работать без браузера)) вот тока что тестиЛ)) но что бы его остановить надо или html форму написать с кнопкой стоп и отправкой запроса на остановку цикла)) или же перезагружать apache+mysql))
Покинул форум
Сообщений всего: 8
Дата рег-ции: Июль 2011
Помог: 0 раз(а)
Спасибо огромнейшее за помощь. Действительно, работает с бесконечным зацикливанием.
Но вот проблемка еще появилась: не могу прочитать сообщение с сервера больше чем 12КВ. Т.е. я ему говорю: socket_read($socket,131072) (128KB), а он читает первые 12 и все ((
Читал инфу по socket_read() -ничего путного не нашел (( Может кто знает как повысить лимит читабельности ? Может кто-то знает, как бороться с этим недугом?
Покинул форум
Сообщений всего: 8
Дата рег-ции: Июль 2011
Помог: 0 раз(а)
Всем участникам огромное спасибо за помощь.
Все вылечил, разобрался со всем.
На счет читабельности проблема скрывалась в другом:
Сервер передавал с перебоями. А т.к. передавался хмл, то деструктор выдавал ошибку. Поборол недуг разглядывая последний символ в ответе.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.