Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Что делаю не так php soket

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Проблема с сокетами
undex
Отправлено: 26 Октября, 2016 - 16:39:53
Post Id



Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Февр. 2014  
Откуда: берутся дети?


Помог: 0 раз(а)




далаю скриптец для работы с сокетами, сострепал тестовый скрипт, все отлично работает, ное есть одно НО - подключится может только 1 пользователь, хотя в socket_listen прописано 10.
Вот код:
Спойлер (Отобразить)

Первый пользователь подключившийся водит приветственное сообщение и может свободно работать с сокетами, второй просто пустой экран, тестирую через стандартную утилиту telnet в MS WinXP. Сервер на WinServer 2003 (XAMPP)
Тестирую с разных пк в одной локальной сети.
 
My status
 Top
armancho7777777 Супермодератор
Отправлено: 27 Октября, 2016 - 10:47:11
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




Пример для прослушки более одного клиента.
 
 Top
undex
Отправлено: 27 Октября, 2016 - 11:21:50
Post Id



Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Февр. 2014  
Откуда: берутся дети?


Помог: 0 раз(а)




armancho7777777 пишет:
Пример для прослушки более одного клиента.

Благодарю, помогло. Еще один вопрос возник. У меня при закрытии одного из терминалов телнета вылетает полностью весь сокет-сервер, ошибка в кракозябрах (хотя кодировка мелкософтовская) ошибка в функции socket_read();
(Добавление)
Перевел кракозябры, текст ошибки: "Операция успешно завершена."
 
My status
 Top
teddy
Отправлено: 27 Октября, 2016 - 13:59:49
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


Помог: 91 раз(а)




Цитата:
есть одно НО - подключится может только 1 пользователь, хотя в socket_listen прописано 10.

Ну и что написано. Это вовсе не означает, что эта десятка будет обрабатываться вне очереди. Если количество соединений более чем 1, тогда эти соединения будут обрабатываться по очереди. В вашем случае после принятия соединения запускается бесконечный цикл который обрабатывает это соединение. Ввиду этого первое соединение не покидает очередь и остальные "ребята" не могут "работать". Если вы будете использовать блокирующие операции при обработки соединений, то никакие socket_select-ы тут не помогут, потому что обработка соединений происходит в одном потоке.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB