powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / socket php
3 сообщений из 3, страница 1 из 1
socket php
    #38452452
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нужна помощь, а точнее разяснение - как работать с сокетами.

1)не могу понять, блокирующий и не блокирующий режим.
если я вызываю socket_read() в блокирующем режиме, то скрипт на этой команде замирает, пока не прочитает чтото, как я понял. тогда возникает вопрос, а в неблокирующем - что?

куда денуться потом прочитанные данные, если выполнение кода пошло дальше.
аналогично запись в неблокрующем режиме - данные будут ити очередью как отправляли.

2)но первое ещо ладно, а вот в упор не понимаю функцию чтения в бинарном режиме при блокирующем сокете.

вот начал скрипт читать, подвис на команде этой - и висит вечно если ему ничего не передал другой процесс - так зачем такое нужно?

у себя опробовал, несолько готовых примеров сервер+клиент. везде одно и тоже.
чтение блокирующим сокетом в бинарном режиме по типу
Код: php
1.
while ($data = socket_read($sock, 2048); { echo $data; }


и получаеться следующее - сервер читая запрос клиента, когда вычитал всё виснет на таком чтении. клиент, послав запрос и начав читать тоже виснет.
что за ерунда? как быть?!

3)socket_select() - работа функции понятна, но как указано в документации, если мы с помощью её получили сокет, на котором чтото можно прочитать, прежде чем использовать этот же сокет повторно в сокет_селект, из негу нужно всё вычитать.

все вычитывание - пока читаеться, читать - и опять приходим к зависанию как в п.2.
===========
есть люди которые работали с этим?

ЗЫ
лично для меня не надо тратить время и писать код сервера и клиента в пример.
достаточно на словах обяснить - что я не понял(или упустил) в работе с сокетами.

как при блокирующем сокете - не зависнуть?!
как использовать не блокирующие.
(таже запись, ну записали мы не в блокирующем режиме, и как нам знать, когда начинать читать ответ в неблокирующем?!)

весь день промучался, так и не получил желаемой работы:
сервер вечно слушает, каждый кто ему написал получает приветсвие, отвечает запросом, и должен получить овтет.
...
Рейтинг: 0 / 0
socket php
    #38452635
?
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
?
Гость
alex564657498765453как при блокирующем сокете - не зависнуть?!
Знать, сколько должно быть получено байтов, и читать ровно столько.
как использовать не блокирующие.
(таже запись, ну записали мы не в блокирующем режиме, и как нам знать, когда начинать читать ответ в неблокирующем?!)
select + read
...
Рейтинг: 0 / 0
socket php
    #38452898
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо. а ещо вопросик.

А таймаутом как пользоваться?(таймаут на сокете)

А то у меня получилось следующее
блокирующий сокет с таймаутом, завис на функции чтения(как и должно быть) но по истечению времени висит дальше, а когда всетаки чтото щитал, выскочила ошибка о превышении таймаута.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / socket php
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]