![]() |
|
Модераторы: Aliance, skyboy, MoLeX, ksnk |
![]()
|
|
| romann2004 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 10.2.2010 Репутация: нет Всего: нет |
Существует ли способ совершить обмен данными используя только одно соединение (pfsockopen или fsockopen) без fclose?
Т.е.: отправил - получил - отправил - получил и т.д. Другими словами - есть ли способ передать серверу информацию о том, что следующий запрос совершенно новый и что высылается новый заголовок? |
|||
|
||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 1 Всего: 315 |
наверняка не скажу, но учитывая, что заголовки не могут идти после тела запроса, имхо, вряд ли
|
|||
|
||||
| sTa1kEr |
|
|||
|
9/10 программиста ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1553 Регистрация: 21.2.2007 Репутация: нет Всего: 146 |
От чего же? Отправляйте заголовок Connection: keep-alive, тогда сервер не будет разрывать соединение и по окончании передачи ответа вы сможете по тому же соединению отправить новый запрос.
|
|||
|
||||
| romann2004 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 10.2.2010 Репутация: нет Всего: нет |
Connection: keep-alive - перепробовал на все различные способы, не катит. Может что-то не так делаю. Пожалуйста, можно пример? |
|||
|
||||
| sTa1kEr |
|
|||
|
9/10 программиста ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1553 Регистрация: 21.2.2007 Репутация: нет Всего: 146 |
Тогда покажите как вы делаете. Схема должна быть следующая:
1. Коннектитесь к серверу 2. Отправляете запрос серверу 3. Читаете заголовки ответа 4. Парсите заголовки 5. Определяете размер тела (только если сервер не передает тело методом chunked) 6. Читает тело ответа. 7. Если в заголовках ответа от сервера не было Connection: close, то идете к п.2 Если не ошибаюсь, то примерно так. Это сообщение отредактировал(а) sTa1kEr - 11.2.2010, 18:32 |
|||
|
||||
| romann2004 |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 10.2.2010 Репутация: нет Всего: нет |
Так это всё понятно, я уже и заголовки парсил, и тупо на закачку ответа длинной в 1 байт 30 секунд ожидания ставил. Всё без толку. Очередной запрос fputs или вообще не функционирует или глохнет на Notice: fputs() [function.fputs]: send of 293 bytes failed with errno=10053 Или я где-то затупил?
Это сообщение отредактировал(а) romann2004 - 12.2.2010, 11:37 |
||||
|
|||||
| sTa1kEr |
|
|||
|
9/10 программиста ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1553 Регистрация: 21.2.2007 Репутация: нет Всего: 146 |
Ну так а кто будет проверять заголовки ответа?
Собственно сервер может не поддерживать keep alive и всегда закрывать соединения после отправки ответа. В этом случае, конечно-же, придется открывать соединение заново. Добавлено через 2 минуты и 54 секунды
|
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Сеть | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |