Форум dkLab и Denwer
Здесь общаются Web-разработчики.
Генеральный спонсор:
Хостинг «Джино»

Dklab_Realplexor: Comet-сервер промышленного масштаба с API для PHP и JavaScript (Дмитрий Котеров)
Goto page 1, 2, 3 ... 9, 10, 11  Next
Author Message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 411
   поощрить/наказать


PostPosted: Thu Dec 24, 2009 5:59 pm (написано за 15 секунд)
   Post subject: Dklab_Realplexor: Comet-сервер промышленного масштаба с API для PHP и JavaScript
Reply with quote

Dklab Realplexor — это Comet-сервер, позволяющий держать одновремено сотни тысяч долгоживущих открытых HTTP-соединений с браузерами пользователей. JavaScript-код, запущенный в браузере, подписывается на один или несколько каналов Realplexor-а и вешает обработчик на поступление данных. Сервер может в любой момент записать сообщение в один из таких каналов, и оно будет моментально передано всем подписчикам (хоть одному, хоть тысяче), в режиме реального времени и с минимальной нагрузкой для сервера.

dklab.ru/lib/dklab_realplexor/
Back to top
View user's profile Send private message Send e-mail
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 411
   поощрить/наказать


PostPosted: Sat Dec 26, 2009 4:46 am (спустя 1 день 10 часов 46 минут; написано за 16 секунд)
   Post subject:
Reply with quote

* Dklab Realplexor 2009-12-26: v1.23
  - [BUG] Empty identifier passed to IN line ("identifier=") caused warnings.
  - [SPD] Lower the number of useless debug lines and connection's name() calls.
  - [BUG] Improved init script: more time to restart and better signal handling.

* Dklab Realplexor 2009-12-24: v1.22
  - [BUG] SIGPIPE causes the script to restart on some unexpected client's disconnects.
Back to top
View user's profile Send private message Send e-mail
Melethron
Заглянувший



Joined: 11 Mar 2009
Posts: 13
Карма: 0
   поощрить/наказать


PostPosted: Fri Jan 01, 2010 6:57 pm (спустя 6 дней 14 часов 10 минут; написано за 37 секунд)
   Post subject:
Reply with quote

Приветствую!

А как это можно установить на денвере?
Back to top
View user's profile Send private message
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8642
Карма: 194
   поощрить/наказать

Location: 007 495

PostPosted: Sun Jan 03, 2010 12:07 pm (спустя 1 день 17 часов 10 минут; написано за )
   Post subject:
Reply with quote

Это не для Денвера штуковина, в общем...
Back to top
View user's profile Send private message Send e-mail
Melethron
Заглянувший



Joined: 11 Mar 2009
Posts: 13
Карма: 0
   поощрить/наказать


PostPosted: Thu Jan 07, 2010 3:33 am (спустя 3 дня 15 часов 25 минут; написано за 48 секунд)
   Post subject:
Reply with quote

Было бы здорово, если бы можно было тестировать свои скрипты с Realplexor на денвере.
Back to top
View user's profile Send private message
Ivan1986
Участник форума
Warnings: 2


Joined: 09 Oct 2007
Posts: 807
Карма: 39
   поощрить/наказать


PostPosted: Thu Jan 07, 2010 3:44 am (спустя 11 минут; написано за 37 секунд)
   Post subject:
Reply with quote

Melethron
Если бы windows была операционной системой, а не поделкой майкрософта :)
Back to top
View user's profile Send private message Send e-mail
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 411
   поощрить/наказать


PostPosted: Fri Jan 08, 2010 3:10 am (спустя 23 часа 26 минут; написано за 48 секунд)
   Post subject:
Reply with quote

Melethron wrote:
Было бы здорово, если бы можно было тестировать свои скрипты с Realplexor на денвере.
Будет можно в будущем, функционал в разработке.
Back to top
View user's profile Send private message Send e-mail
Аноним
Guest





Карма: 386
   поощрить/наказать


PostPosted: Sat Jan 09, 2010 11:42 pm (спустя 1 день 20 часов 31 минуту; написано за 1 минуту 24 секунды)
   Post subject:
Reply with quote

Здравствуйте, у меня проблема. Установил все по мануалу, при попытке добавить сообщение в канал выскакивает такое исключение:
Quote:
Fatal error: Uncaught exception 'Dklab_Realplexor_Exception' with message 'No Content-Length header in response headers:
Дальше идет шапка, в которой нет Content-Length, но заголовок сообщает "HTTP/1.1 200 OK", с чем это может быть связанно?
Back to top
Аноним
Guest





Карма: 386
   поощрить/наказать


PostPosted: Sun Jan 10, 2010 12:23 am (спустя 41 минуту; написано за 34 секунды)
   Post subject:
Reply with quote

Прошу прощения, указал WAIT адрес при подключении со стороны сервера, вместо IN адреса. Теперь все работает, как часы.
Back to top
Melethron
Заглянувший



Joined: 11 Mar 2009
Posts: 13
Карма: 0
   поощрить/наказать


PostPosted: Sun Jan 10, 2010 3:54 am (спустя 3 часа 30 минут; написано за 1 минуту 17 секунд)
   Post subject:
Reply with quote

Дмитрий Котеров wrote:
Будет можно в будущем, функционал в разработке.
Это очень здорово! Спасибо вам за всё это!
Back to top
View user's profile Send private message
Solomina
Guest





Карма: 386
   поощрить/наказать


PostPosted: Fri Jan 15, 2010 2:54 am (спустя 4 дня 22 часа 59 минут; написано за 3 минуты 39 секунд)
   Post subject: Dklab_Realplexor: Comet-сервер промышленного масштаба с API для PHP и JavaScript
Reply with quote

Прошу прощения за глупый вопрос. А как это можно запустить на обычном платном виртуальном хостинге? Просто распаковать в корень сайта? Или у сайтмейкера с "обычными" мозгами ничего не получится? Сможете подсказать, какие шаги предпринять?
Back to top
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8642
Карма: 194
   поощрить/наказать

Location: 007 495

PostPosted: Fri Jan 15, 2010 12:21 pm (спустя 9 часов 27 минут; написано за 39 секунд)
   Post subject:
Reply with quote

Solomina
Вам нужен как минимум VDS, или же виртуальный хостинг с возможностью запускать демонов (как правило, такие тарифные планы стоят существенно больше).
Back to top
View user's profile Send private message Send e-mail
Solomina
Guest





Карма: 386
   поощрить/наказать


PostPosted: Fri Jan 15, 2010 1:43 pm (спустя 1 час 22 минуты; написано за 4 минуты 55 секунд)
   Post subject: Dklab Realplexor
Reply with quote

Правильно ли я поняла, что для работы с Dklab Realplexor сначала нужно освоить его на локальной машине с Линуксом, а создать в интернете проект возможно только с помощью администраторов web-сервера, так как настроить его под эту штуковину очень сложно? А существует ли какая-нибудь библиотека, обеспечивающая общение на сайте, которую можно просто в папке загрузить на веб- сервер и обращаться к её методам из php скриптов сайта.
Судя по описанию и примерам,Dklab Realplexor очень хорошая штука, но всё же не понятно как её использовать на сайтах.
Back to top
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8642
Карма: 194
   поощрить/наказать

Location: 007 495

PostPosted: Sat Jan 16, 2010 2:02 am (спустя 12 часов 19 минут; написано за )
   Post subject:
Reply with quote

Эта библиотека, насколько я понял, расчитана больше на владельцев либо VDS, либо собственного сервера, и умения его настроить. В других случаях придется пользоваться менее производительными решениями.
Back to top
View user's profile Send private message Send e-mail
Solomina
Guest





Карма: 386
   поощрить/наказать


PostPosted: Sat Jan 16, 2010 1:23 pm (спустя 11 часов 20 минут; написано за 1 минуту 14 секунд)
   Post subject: Dklab_Realplexor
Reply with quote

Ну, что-ж! Видимо опять придётся самой писать "менее производительное решение". А я уж думала - Вот оно -Счастье!
Back to top
chop-chop
Guest





Карма: 386
   поощрить/наказать


PostPosted: Mon Jan 18, 2010 4:03 pm (спустя 2 дня 2 часа 39 минут; написано за 5 минут 57 секунд)
   Post subject:
Reply with quote

Ну если вы можете сама написать хоть какое то решение то посмотрите в сторону тех длинных запросов.
Аякс открывает соединение, скрипт на сервере крутится в цикле (внутри цикла обязательно sleep(1)) пока не увидит новое сообщение. Как только появляется новое сообщение - сразу же вывод. Аякс получает сообщение, обрывает соединение и сразу же открывает новое. Нагрузка на сервер намного меньше чем при запросе через каждые две секунды. Доставка сообщений мгновенная. Если ещё сообщения хранить в мемкэше, то вообще все в порядке будет. Для промышленных решений подойдет врядли, а вот для ваших точно подойдет.
Back to top
Аноним
Guest





Карма: 386
   поощрить/наказать


PostPosted: Mon Jan 18, 2010 9:56 pm (спустя 5 часов 53 минуты; написано за 34 секунды)
   Post subject:
Reply with quote

У Event-Lib нет проблемы с debian amd64? Никак не могу поставить.
Back to top
chop-chop
Guest





Карма: 386
   поощрить/наказать


PostPosted: Tue Jan 19, 2010 4:02 pm (спустя 18 часов 6 минут; написано за 9 минут 6 секунд)
   Post subject:
Reply with quote

Я тоже замучился ставить на Кубунту. Потратил не мало времени. Только что вот закончил)
Поставил я realplextor, запустил пишет что то не то смотри лог. В логе написано нет libevent и написано как его установить.
Конкретно:
apt-get install libevent-dev gcc
perl -MCPAN -e "install Event::Lib"

первое проходит, второе начинает ругаться
долго мучался пытаясь понять что да как
решил удалить все установленное apt-get (что касалось эвентлиба), и собрать вручную
скачал www.monkey.org/~provos/libevent-2.0.3-alpha.tar.gz
тут то и открылась истина - одного gcc было мало
доустановил
apt-get install libc6-dev g++
библиотека собралась на ура.
после этого
perl -MCPAN -e "install Event::Lib"
все без ошибок
сервер тоже запустился.

Видимо более правильная инструкция по установке должна выглядеть так
apt-get install libevent-dev libc6-dev g++ gcc
perl -MCPAN -e "install Event::Lib"
Back to top
Lance
Guest





Карма: 386
   поощрить/наказать


PostPosted: Thu Jan 21, 2010 6:04 pm (спустя 2 дня 2 часа 2 минуты; написано за 1 минуту 18 секунд)
   Post subject: Sandbox
Reply with quote

Hi Dmitry Kóterov,

This looks really cool ! I try the sand box and it does not seem to do anything? (Safari OS X)

It loads ok but does not seem to post any data to any of the chat channels..

Thanks,

Lance
Back to top
aleks_raiden
Guest





Карма: 386
   поощрить/наказать


PostPosted: Fri Jan 22, 2010 6:44 pm (спустя 1 день 39 минут; написано за 4 минуты 30 секунд)
   Post subject: Empty channels
Reply with quote

Приветствую,

Используем Realplexor в своем стартапе, возник вот какой вопрос:

Как я понимаю, если канал никто не слушает и прошло указанное в конфиге время (CLEAN_ID_AFTER), канал будет очищен. Но если канал не слушается, но я посылаю в него сообщения, то получится что сначала заполнится очередь буфера (по умолчанию, 30 последних), потом же будут сохранятся только последние 30 сообщений, так? А по прошествии CLEAN_ID_AFTER вся очередь очистится и, если я дальше посылаю сообщения, они снова будут сохранятся в буфер и так снова по кругу?

Возможно ли тогда сделать такой режим, чтобы буфер не очищался а всегда хранился в виде N последних сообщений? и очищался только если его никто не слушает и не пишет в него CLEAN_ID_AFTER время?
Back to top
Аноним
Guest





Карма: 386
   поощрить/наказать


PostPosted: Sun Jan 24, 2010 3:15 pm (спустя 1 день 20 часов 30 минут; написано за 2 минуты 24 секунды)
   Post subject:
Reply with quote

Смог установить Event-Lib на 64битной системе только с исходников в принудительном режиме (два теста проваливаются, причины неизвестны). Но после этого проблемы не кончились. При 300 одновременных событиях, рассылаемых 80 подписчикам, cpu улетает в 100%. В среднем процесс perl часто отнимает 15-20% процессора, даже при малом количестве подписчиков. Я думаю, что так быть не должно, с чем это может быть связанно?
Back to top
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 411
   поощрить/наказать


PostPosted: Mon Jan 25, 2010 2:27 am (спустя 11 часов 12 минут; написано за 1 минуту 6 секунд)
   Post subject:
Reply with quote

Lance wrote:
This looks really cool ! I try the sand box and it does not seem to do anything? (Safari OS X)
It loads ok but does not seem to post any data to any of the chat channels..
Very strange. We tested it in all modern browsers.
Could you please test it on Safari and immediately after that - on Firefox?
Back to top
View user's profile Send private message Send e-mail
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 411
   поощрить/наказать


PostPosted: Mon Jan 25, 2010 2:31 am (спустя 4 минуты; написано за 1 минуту 32 секунды)
   Post subject:
Reply with quote

aleks_raiden wrote:
Как я понимаю, если канал никто не слушает и прошло указанное в конфиге время (CLEAN_ID_AFTER), канал будет очищен.
Это не так. Канал будет очищен, если с момента последней ЗАПИСИ в него прошло как минимум CLEAN_ID_AFTER секунд. Читатели не учитываются.
aleks_raiden wrote:
Возможно ли тогда сделать такой режим, чтобы буфер не очищался а всегда хранился в виде N последних сообщений? и очищался только если его никто не слушает и не пишет в него CLEAN_ID_AFTER время?
Вы можете присвоить CLEAN_ID_AFTER очень большое число - например, 1 год (3600 * 24 * 365).
Back to top
View user's profile Send private message Send e-mail
Аноним
Guest





Карма: 386
   поощрить/наказать


PostPosted: Mon Jan 25, 2010 12:15 pm (спустя 9 часов 44 минуты; написано за 6 минут 16 секунд)
   Post subject:
Reply with quote

Кроме производительности (возможно это просто неправильная конфигурация сервера, или недостаток ресурсов, или проблема Event-Lib на amd64), есть еще вопрос.

У меня есть два канала, допустим «global» и «unique», клиент слушает два этих канала и с этим все в порядке (если судить по GET параметрам запроса). На сервере происходит два события, например добавление контента и обновление статистики, первое событие отправляется в «unique», а второе в «global». Это происходит при одном запросе, но через два вызова send() из realplexor php api. Проблема в том, что второе событие из двух всегда не доходит до пользователя. Если их поменять местами, то, соответственно, придет другое событие из двух, а оставшееся - нет. Если добавить 10 send(), то первое приходит нормально, а остальные не доходят. С слушателями все в порядке, если одно из этих событий произойдет на другой странице - данные приходят. А если на одной странице два send() в разный набор каналов, то не приходит. В чем может быть причина подобного поведения?
Back to top
Аноним
Guest





Карма: 386
   поощрить/наказать


PostPosted: Mon Jan 25, 2010 5:15 pm (спустя 4 часа 59 минут; написано за 24 секунды)
   Post subject:
Reply with quote

Постоянно такие ошибки:
Quote:
<GEN592021> line 1 during global destruction.
Jan 24 19:38:52 realplexor/dklab_realplexor.conf: Use of uninitialized value $fh in delete at Storage/PairsByFhs.pm line 27, <GEN592021> line 1 during global destruction.
Jan 24 19:38:52 realplexor/dklab_realplexor.conf: #011(in cleanup) Can't call method "debug" on an undefined value at Event/Lib/Connection.pm line 82, <GEN592021> line 1 during global destruction.
Jan 24 19:38:52 realplexor/dklab_realplexor.conf: Use of uninitialized value $fh in delete at Storage/ConnectedFhs.pm line 27, <GEN592021> line 1 during global destruction.
Jan 24 19:38:52 realplexor/dklab_realplexor.conf: Use of uninitialized value $fh in delete at Storage/ConnectedFhs.pm line 27, <GEN592021> line 1 during global destruction.
Jan 24 19:38:52 realplexor/dklab_realplexor.conf: Use of uninitialized value $fh in delete at Storage/PairsByFhs.pm line 27, <GEN592021> line 1 during global destruction.
Что это значит?
Back to top
Аноним
Guest





Карма: 386
   поощрить/наказать


PostPosted: Mon Jan 25, 2010 6:23 pm (спустя 1 час 8 минут; написано за 43 секунды)
   Post subject:
Reply with quote

А, с этим разобрался. Это при неправильном отключении такие ошибки. Извиняюсь.
Back to top
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 411
   поощрить/наказать


PostPosted: Tue Jan 26, 2010 1:59 am (спустя 7 часов 36 минут; написано за 1 минуту 12 секунд)
   Post subject:
Reply with quote

Аноним wrote:
Если добавить 10 send(), то первое приходит нормально, а остальные не доходят.
Не удается воспроизвести.

Более того, на демо-странице rutvit.ru/realplexor/demo?ids=aaa при выборе внизу "Повторить 2 раза" как раз производится отправка нескольких сообщений в один канал, примерно вот таким кодом:

for ($i = 0; $i < max(@$_POST['repeat'], 1); $i++) {
    $mpl->send($ids, $_POST['message'] . (@$_POST['repeat'] > 1? " #$i" : ""));
}

Уточните, пожалуйста, шаги по воспроизведению.
Back to top
View user's profile Send private message Send e-mail
Lance
Guest





Карма: 386
   поощрить/наказать


PostPosted: Wed Jan 27, 2010 6:23 am (спустя 1 день 4 часа 24 минуты; написано за 1 минуту 18 секунд)
   Post subject: Test on Firefox (Sandbox demo no go os x)
Reply with quote

Hi Dmitry Kóterov,

I also tested on Firefox 3.5.2 OS X 10.5.8 no response on any channel in the sandbox.

Is anyone else having the demo work on os X?

Regards,

Lance
Back to top
Guest






Карма: 386
   поощрить/наказать


PostPosted: Wed Jan 27, 2010 12:09 pm (спустя 5 часов 45 минут; написано за 6 минут 57 секунд)
   Post subject:
Reply with quote

Дмитрий Котеров wrote:
Уточните, пожалуйста, шаги по воспроизведению.
Вот пример:
Code (php): скопировать код в буфер обмена
$rpl -> send(array (www.php.net/array)('one', 'two'), 'data');
$rpl -> send('three', 'data2');
У меня к слушателю, который слушает 'one' и 'three' данные data2 не доходят.
Скорее всего, конечно, это у меня где-то ошибка. Но на всякий случай проверьте.

И еще, я думаю это не нормально, если от одного ядра Intel(R) Core(TM) i7 CPU @ 2.67 процесс perl при 20-30 подписчиках (и 50 каналах) при обновлении занимает 30-60% процессора? У вас используется библиотека EventLib на какой архитектуре, 64 бита? Не может ли с этим быть проблем, просто тесты при make test проваливались и я установил её принудительно. А теперь при большом количестве сообщений заметно понижается производительность, хотя это "большое количество", на самом деле, сравнительно небольшое — 100-200.
Back to top
Guest






Карма: 386
   поощрить/наказать


PostPosted: Thu Jan 28, 2010 6:28 pm (спустя 1 день 6 часов 18 минут; написано за 43 секунды)
   Post subject:
Reply with quote

По моему, даже если один адресат, надо передавать массивом:
Code (php): скопировать код в буфер обмена
$rpl -> send(array (www.php.net/array)('three'), 'data2');
Back to top
Guest






Карма: 386
   поощрить/наказать


PostPosted: Fri Jan 29, 2010 4:25 am (спустя 9 часов 57 минут; написано за 1 минуту 32 секунды)
   Post subject:
Reply with quote

LanceHi A follow-on to this...It was the google translator page. I thought I might try to find the original URL and once pointed to that it works great!! Very keen on using this ;) Thanks, Lance
Back to top
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 411
   поощрить/наказать


PostPosted: Sat Jan 30, 2010 6:07 am (спустя 1 день 1 час 41 минуту; написано за 4 минуты 1 секунду)
   Post subject:
Reply with quote

New version - 1.24.

Many speed improvements. To achieve maximum speed, try to set VERBOSITY to 0 or 1 in your configuration. Also get rid of "automatic" cursors: they use Math::BigFloat (still), and Math::BigFloat is very slow. Specify cursors manually in $rpl->send() API method.

* Dklab Realplexor 2010-01-30: v1.24
  - [BUG] Avoid warnings in log on unexpected disconnect.
  - [NEW] Refactoring and profiler support.
  - [SPD] Do not create extra shell while calling ulimit.
  - [NEW] Support for per-config log facility.
  - [SPD] Profiler tool with IN line ignorance. Avoid BigFloat in events: 45% speedup. Apache ab patched utility.
  - [SPD] Keep channels pre-sorted after addition. It speedups 60%, because we need less cursor comparisions.
  - [SPD] STDOUT buffering in non-verbose mode. More verbosity levels. Logger speedup. Custom config for profiler script.

Current profiler map attached. :)

P.S.
This new version passes all auto-tests, but if you find a bug in it, please report it here.


map.png
 Description:
 Filesize:  45.96 KB
 Viewed:  135818 Time(s)

map.png


Back to top
View user's profile Send private message Send e-mail
Аноним
Guest





Карма: 386
   поощрить/наказать


PostPosted: Sat Jan 30, 2010 3:56 pm (спустя 9 часов 49 минут; написано за 11 секунд)
   Post subject:
Reply with quote

Спасибо, сейчас потестируем на реальном проекте.
Back to top
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 411
   поощрить/наказать


PostPosted: Mon Feb 01, 2010 1:22 pm (спустя 1 день 21 час 26 минут; написано за 6 секунд)
   Post subject:
Reply with quote

А что у Вас за проект?
Back to top
View user's profile Send private message Send e-mail
aleks_raiden
Guest





Карма: 386
   поощрить/наказать


PostPosted: Tue Feb 02, 2010 5:41 pm (спустя 1 день 4 часа 18 минут; написано за 59 секунд)
   Post subject:
Reply with quote

У нас уже несколько недель на тестовом сервере работает ок, вчера перевел на новую версию, пока вопросов нет. Что за приложение - веб-система трейдинговая.
Back to top
Sign63
Guest





Карма: 386
   поощрить/наказать


PostPosted: Sat Feb 06, 2010 1:21 pm (спустя 3 дня 19 часов 39 минут; написано за 5 минут 11 секунд)
   Post subject:
Reply with quote

здравствуйте, я пытаюсь использовать multiplexor из программы-клиента на Си
в бинарнике client.c вставляю строку GET 127.0.0.1:8088/?identifier=1z2y3z HTTP/1.0\r\n\r\n мультиплексор пишет что принято, клиент онлайн
потом передаю данные через telnet, программа client.c ничего не принимает/не отображает
Не могли бы вы мне помочь разобраться, как разработчик multiplexor'a?
Code (c): скопировать код в буфер обмена
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>

void error(char *msg)
{
    perror(msg);
    exit(0);
}

int main(int argc, char *argv[])
{
    int sockfd, portno, n;
    struct sockaddr_in serv_addr;
    struct hostent *server;

    char buffer[256];
    if (argc < 3) {
       fprintf(stderr,"usage %s hostname port\n", argv[0]);
       exit(0);
    }
    portno = atoi(argv[2]);
    sockfd = socket(AF_INET, SOCK_STREAM, 0);
    if (sockfd < 0)
        error("ERROR opening socket");
    server = gethostbyname(argv[1]);
    if (server == NULL) {
        fprintf(stderr,"ERROR, no such host\n");
        exit(0);
    }
    bzero((char *) &serv_addr, sizeof(serv_addr));
    serv_addr.sin_family = AF_INET;
    bcopy((char *)server->h_addr,
         (char *)&serv_addr.sin_addr.s_addr,
         server->h_length);
    serv_addr.sin_port = htons(portno);
    if (connect(sockfd,&serv_addr,sizeof(serv_addr)) < 0)
        error("ERROR connecting");
    printf (www.opengroup.org/onlinepubs/009695399/functions/printf.html)("Please enter the message: ");
    bzero(buffer,256);
    fgets(buffer,255,stdin);
    n = write(sockfd,buffer,strlen(buffer));
    if (n < 0)
         error("ERROR writing to socket");
    bzero(buffer,256);
    n = read(sockfd,buffer,255);
    if (n < 0)
         error("ERROR reading from socket");
    printf (www.opengroup.org/onlinepubs/009695399/functions/printf.html)("%s\n",buffer);
    return 0;
}
Back to top
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8642
Карма: 194
   поощрить/наказать

Location: 007 495

PostPosted: Sat Feb 06, 2010 7:02 pm (спустя 5 часов 40 минут; написано за )
   Post subject:
Reply with quote

Так Вы запрос неполный отправляете, он же должен кончаться на \r\n\r\n, а Вы считываете и отправляете лишь одну строчку (используя fgets). Вам вообще нужно либо использовать неблокирующие операции чтения/записи, либо читать из сокета в отдельной нити, иначе Вы все равно ничего внятного получить не сможете.
Back to top
View user's profile Send private message Send e-mail
Guest






Карма: 386
   поощрить/наказать


PostPosted: Sun Feb 07, 2010 12:05 am (спустя 5 часов 2 минуты; написано за 34 секунды)
   Post subject:
Reply with quote

подправил кое-что, но не получается сделать non blocking чтение сокета
Code (c): скопировать код в буфер обмена
n = read(sockfd,buffer,255);
Code (c): скопировать код в буфер обмена
#include <unistd.h>
#include <fcntl.h>
.
.
sockfd = socket(AF_INET, SOCK_STREAM, 0);
fcntl(sockfd, F_SETFL, O_NONBLOCK);
n = read(sockfd,buffer,255);
.
Выдает ошибку
Code (any language): скопировать код в буфер обмена
ERROR reading from socket: Transport endpoint is not connected
Back to top
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8642
Карма: 194
   поощрить/наказать

Location: 007 495

PostPosted: Sun Feb 07, 2010 2:57 am (спустя 2 часа 52 минуты; написано за 1 минуту 16 секунд)
   Post subject:
Reply with quote

Гость wrote:
Выдает ошибку
ERROR reading from socket: Transport endpoint is not connected
Ну что Вы, пишете на C, а ведете себя как человек, впервые увидевший компьютер :). По-моему, текст ошибки достаточно четкий смысл имеет, переведите :).
Back to top
View user's profile Send private message Send e-mail
Guest






Карма: 386
   поощрить/наказать


PostPosted: Sun Feb 07, 2010 11:26 am (спустя 8 часов 29 минут; написано за 4 минуты 29 секунд)
   Post subject:
Reply with quote

Си я изучаю только первую неделю, поэтому испытываю затруднения.
Я так понимаю что для мастдая нужно использовать winsock api и выше приведённое работать не будет?
И еще Дмитрий упоминал на хабре что будет писать клиент на других языках. Когда ожидать?
Back to top
Display posts from previous:   
Post new topic   Reply to topic All times are GMT + 3 Hours
Goto page 1, 2, 3 ... 9, 10, 11  Next
Page 1 of 11    Email to a Friend.
Post a reply
Username
Subject
Господа спамеры и оптимизаторы!

Вы можете даже и не пытаться вставлять в текст поста ссылки - они все равно автоматически удаляются (вернее, тэги <a> заменяются на тэги <u>).

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

Disable BBCode in this post
Disable Smilies in this post
    HTML is OFF
BBCode is ON
Smilies are ON
You cannot post new topics in this forum. You can reply to topics in this forum. You cannot edit your posts in this forum. You cannot delete your posts in this forum. You cannot vote in polls in this forum. You cannot attach files in this forum. You can download files in this forum.
XML