Сокет сервер. Проблемы использования.

cDLEON

Онанист РНРСlub
Сокет сервер. Проблемы использования.

В общем написал я свой сокет-сервер....
Появилась проблема. У себя на машине бинджю его на 127.0.0.1, пробую подконнектиться - всё норм.
Заливаю на сервак, бинджю его на ИП-шник сервака. Запускаю... (Правда через браузер... Т.к. мне нужно только протестить работу....Так быстрее...) Пробую стукнуть на этот ИП:порт. На что сервак - ни как не реагирует.
Более того. В скрипте для тестов выставлен таймаут 120 сек. Проходит несколько минут - пробую забиндить ещё на тот же порт. Пишед что этот порт уже кем то используется.
Кто-нибудь с таким сталкивался? (
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
Не надо логарифмической линейкой забивать гвозди...
И сервер на php тоже писать не стоит.
Демон будет падать - и в конце концов его прийдется выкинуть. И никто не поможет даже с проблемой открытия портов. Жизнь трудна.
Кстати, какой номер порта?
 

phprus

Moderator
Команда форума
cDLEON
Мне нужна возможность запуска сервака кроном. Без компиляции.
А кто тебе сказал, что для каждого запуска программы кроном эту программу надо перекомпилировать? Или ты считаешь, что скомпилированные программы нельзя запускать кроном?

Кроме того какой смысл в запуске сервера кроном? На сколько я понимаю сервер должен постоянно работать.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
что тут сказать ...
#netstat -ltp
У меня, когда надо, всё работает. Правда, такого, чтобы мне нужен был сервер на php - не бывает :)
 

cDLEON

Онанист РНРСlub
phprus
На сколько я знаю, есть разница между компиляцией на FreeBSD и Linux. Или я не прав ?
Кроме того какой смысл в запуске сервера кроном? На сколько я понимаю сервер должен постоянно работать.
А что разве крон не сможет запустить раз-науказ мой скрипт ?
Я имею ввиду, что мне нужен запуск без РУТА.
grigori
Не совсем тебя понял =(. А чем мне поможет инфа по сетевым подключениям ? 8) Сокет биндится 100%. А вот работать не хочет =((
rooot
Помоему это ты бред несёшь )
 

phprus

Moderator
Команда форума
cDLEON
На сколько я знаю, есть разница между компиляцией на FreeBSD и Linux. Или я не прав ?
И прав и нет одновременно. Компилятор то и там и там одни (GCC), однако твой код можетбыть написан с использованием возможностей предоставляемых только одной ОС и по этому на других он может не компилироваться.
 

cDLEON

Онанист РНРСlub
phprus
Хех. Тогда давай перестанем говорить о варианте написания на СИ и перейдём к обсуждению сути моего вопроса ? (
Мне не нужен слишком навороченный сервер. Поэтому этого должно хватить.
 

rsv

Новичок
возможно на сервере стоит фаервол и открыты тольку необходимые порты (80, 110, 25) а остальное просто закрыто.
 

a_[w]

Новичок
Да, уж как то вы отклонились. :)
Я когда писал свой сокет-сервер тоже столкнулся с большими проблемами т.к.
1. это был мой первый сервер.
2. доки по написанию оного на РНР дохера, но вся спижжена с сайта зенда с неправильными примерами. :)

Вопервых, хотелось бы узнать насколько далеко ты продвинулся в этом направлении. Во вторых, возможно на серваке отключены сокеты совсем(я с денвером поначалу нае**лся). Втретих попробуй потыкать
set_time_limit(0);
и
ignore_user_abort(true); если запускаешь из-под апача.

Если будет больше инфы, то можно будет более чётко ответить. :)
Кста, незабывай про register_shutdown_function();
И ещё можешь попробовать биндить его на серваке на 127.0.0.1, а клиентом брать IPшник сервака. И что у тебя за клиент и где находится?
 

ys

отодвинутый новичок
По моему, rsv выдвинул самое правильное предположение.
 

cDLEON

Онанист РНРСlub
a_[w]
Вопервых, хотелось бы узнать насколько далеко ты продвинулся в этом направлении.
В области сокетов работал много. В оснавном это были клиенты. Вот сервер пишу впервые. Но кроме как socket_bind и socket_accert там ничего нового =)
Запустил скрипт на другом серваке - всё заработало.
Кста, незабывай про register_shutdown_function()
На данном этапе она мне по просту не нужна. Позже, когда нужно будет всё это "финализировать", конечно добавлю)
И что у тебя за клиент и где находится?
Клиент ? Telnet на данном этапе. Находится у меня на машине. (Беларусь=))
---
Есть подозрения, что по сервер, к которому прикручен мой ИП адрес - это прокся, либо стоит файрвол который всё это блочит. Поэтому ни фига и не пашет (
На данный момент уточняю...

-~{}~ 17.05.07 15:43:

В общем на серваке стоял файрвол.
---
Хотел узнать ещё один ньюанс...
socket_select($read,$write,$other=NULL);
Как после того, как в массиве $write появляется изменившийся сокет, "очистить его" т.е. сказать, что я уже знаю, что запись удалась?
 

ys

отодвинутый новичок
> Как после того, как в массиве $write появляется изменившийся сокет, "очистить его" т.е. сказать, что я уже знаю, что запись удалась?

Проще говоря: Вам это не нужно.
А очистить: ну не пихай его в массив, делов то.
 

cDLEON

Онанист РНРСlub
ys
Ну а если я в него опять чего-нить запишу?
Он автоматом "очиститься" ?
Хотя чего я спрашиваю.... Сча сам проверю ))
 
Сверху