С Новым годом! Форум программистов, компьютерный форум, киберфорум
PHP: сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/25: Рейтинг темы: голосов - 25, средняя оценка - 4.64
46 / 48 / 2
Регистрация: 16.08.2013
Сообщений: 257

Можно ли создавать несколько открытых соединений на одином порту?

04.12.2013, 13:03. Показов 4701. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Создаём сокет и садим его на порт, далее естественно, он получает соединения и обрабатывает их в порядке очереди пока клиент не отправит специальную команду, отрубится или мы сами не вырубим его, другие в это время ждут. Можно ли сделать несколько открытых соединений на одном порту без очереди? в PHP? др. серверном языке или это в принципе невозможно?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.12.2013, 13:03
Ответы с готовыми решениями:

Количество открытых соединений со службой
Доброго дня! Есть WCF сервис, хостится в виде службы Windows, возникла проблема, через какое-то время служба перестаёт принимать...

Как снять ограничения на количество одновременных открытых соединений
Переустановил Windows еще вчера и сегодня опять какая-то программа ограничила кол-во одновременных соединений. Сейчас стоит ограничение...

Можно ли в VisualBasic.Net создавать несколько WindowsAplication сразу?
Можно ли в VisualBasic.Net создавать несколько WindowsAplication сразу?Если да то как? заранее спасибо.

6
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
04.12.2013, 13:27
Когда вы создаёте слушающий сокет, он один.
Но после подключения к нему клиента, создаётся новый сокет, на каждого клиента по сокету.
Другие могут ждать, из за того, что Вы используете блокирующие сокеты, не асинхронные.
Переделайте на неблокирующие сокеты, и будет Вам счастье
1
46 / 48 / 2
Регистрация: 16.08.2013
Сообщений: 257
04.12.2013, 13:36  [ТС]
DrobyshevAlex, это поставить non blocking? не подскажешь как организовать многого постоянных соединений на одном порту?
0
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
04.12.2013, 13:41
Цитата Сообщение от NinjaStar Посмотреть сообщение
это поставить non blocking?
Да, но не только, нужно переписать приём информации из сокета, если вам нужно получить 100 байт, то не факс то вы получите их за 1 раз, читайте и складывайте во временный буфер, пока не получите всё что нужно, вообщем в двух словах сложно объяснить, погуглите отличие блокирующих от не блокирующих сокетов.
1
46 / 48 / 2
Регистрация: 16.08.2013
Сообщений: 257
04.12.2013, 15:54  [ТС]
DrobyshevAlex,


Это должно работать правильно?

Кликните здесь для просмотра всего текста


PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?
 
include "conf.php";
 
 
$back = "wellcom";
$s    = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
        socket_bind  ($s, HOST_IP, HOST_PORT);
        socket_listen($s);
 
        socket_set_nonblock($s);
     
     
     
   while(1)
   {   
   
     if( false !== ( $ac = socket_accept($s)) )
     {
     
       echo socket_read ($ac, 128,   PHP_BINARY_READ)."\r\n";
            socket_write($ac, $back, strlen($back));
            
            
            socket_close($ac);
            ob_flush();
       
     }     
     
     sleep(1);
 
   }
 
?>



А как обрабатывать нескольких клиентов? ведь ресурс сокета не передашь другому запущенному файлу для ожидания других соединений? а новый создавать не получится же на занятый порт?

Добавлено через 1 час 10 минут
socket_create_listen?

Добавлено через 32 минуты
Короче сделал так, как только приходит клиент - выполняется функция аццепт получаю дескриптор соединения и закрываю верхний сокет порта, запускается другой файл ожидания с новой регистрацией на порту, вроде работает. только нужен ли тут нонблок уже?
0
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
04.12.2013, 16:10
Цитата Сообщение от NinjaStar Посмотреть сообщение
А как обрабатывать нескольких клиентов? ведь ресурс сокета не передашь другому запущенному файлу
Не совсем понял, зачем другой запущенный файл?
Цитата Сообщение от NinjaStar Посмотреть сообщение
Короче сделал так
Это не правильно.
Цитата Сообщение от NinjaStar Посмотреть сообщение
PHP
1
if( false !== ( $ac = socket_accept($s)) )
вот тут же вы получаете в переменную $ac новый сокет открытый, с клиентом, а сокет в переменной $s остаётся открытым и продолжает слушать новые запросы.
Клиентские соединения складываете в массив, в месте с основным сокетом, и в цикле ждёте в режиме не блокирующих сокетов, новую активность от любого из сокетов.
Если это сокет $s - значит новый конект пришёл, а если нет, то активность сокета клиента, читаете и обрабатываете ошибки.
http://www.php.net/manual/ru/f... select.php - вот эта функция принимает массив сокетов, которые нужно слушать, и вешает на этом месте цикл, что бы не тратить в пустую процессорное время.
Там есть примеры.
1
46 / 48 / 2
Регистрация: 16.08.2013
Сообщений: 257
04.12.2013, 16:56  [ТС]
ТО ЧТО НАДО!! #

Добавлено через 1 минуту
thank you
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.12.2013, 16:56
Помогаю со студенческими работами здесь

При большом числе открытых сокетных соединений они начинают валится
Есть проблема. При открытии большого числа сокетных соединений (порядка 100), летит ошибка (connection closed unexpectedly). Сервер...

Можно ли и рекомендуется ли создавать несколько объектов QThreadPool в одной программе?
Мне интересно, как будут взаимодействовать и будут ли вообще несколько объектов QThreadPool между собой? Как они буду делить ядра...

Несколько соединений с серверами БД
Нужно сделать так, чтобы в коде работать с двумя базами данных. if (!$dbcnx1 = mysql_connect($dblocation1, $dbuser1, $dbpasswd1))...

Несколько соединений для одного клиента
Имеется сервер, принимающий соединения. Каждый клиент имеет два подключения, т.е. на сервере создается два сокета на каждый клиент. Каким...

[Gentoo] Несколько IPSec соединений-диапазонов одной подсети
Имеется исходная конфигурация на Zyxel Zywall 35: несколько VPN каналов, находящихся в одной подсети, соединяются с частичными диапазонами...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru