Author Topic: перл (perl) сокет сервер  (Read 8772 times)

0 Members and 1 Guest are viewing this topic.

Offline peretz

  • Newbie
  • *
  • Posts: 21
  • Karma: +0/-0
перл (perl) сокет сервер
« on: June 14, 2007, 00:11:29 »
ситуация следующая.
необходимо создать сокет-сервер для онлайн-игры.
к этому "серверу" цепляются флешки от клиентов.
взял "за базу" mssd 0.3 (Modular Socket Server Daemon) на перле.
дописал и настроил для нужной нам кондиции.
отлаживал на локальной машине (винда+денвер) и на серваке (freebsd 6 + перл 5.8.8).
сейчас переношу этот скрипт на "чистый" сервер (тоже freebsd 6 + перл 5.8.8),
однако возникли траблы: скрипт запускается, к нему проходит коннект от флехи
и на этом затыкается.
строчка
$self->socket->recv($buf,4096);
не передает в $buf ничего,
на локальном серваке (винда) - все ок!
кучу времени убил, но так и не допёр в чем дело.. перекопал скрипт, пытался "откатываться по версиям" своего скрипта и сравнивал конфиги серваков..
помогите!!
« Last Edit: June 14, 2007, 00:12:58 by peretz »

Offline deepwalker

  • Hero Member
  • *****
  • Posts: 766
  • Karma: +8/-6
перл (perl) сокет сервер
« Reply #1 on: June 14, 2007, 00:35:00 »
Посмотри tcpdump - что там у тебя происходит ниже по уровню.
Ну и офф: twisted - доказано джаббером.

Offline peretz

  • Newbie
  • *
  • Posts: 21
  • Karma: +0/-0
перл (perl) сокет сервер
« Reply #2 on: June 14, 2007, 01:26:50 »
Quote from: deepwalker
Посмотри tcpdump - что там у тебя происходит ниже по уровню.

меня не особо просвятил данный дамп )  подскажи, ПЛИЗ, куда копать

Quote from: deepwalker
Ну и офф: twisted - доказано джаббером.

а это я вообще не понял (

Offline deepwalker

  • Hero Member
  • *****
  • Posts: 766
  • Karma: +8/-6
перл (perl) сокет сервер
« Reply #3 on: June 14, 2007, 09:28:15 »
Ну ты же видишь там процесс установки соединения и тп? Вот и просмотри разницу. Можешь воспользоваться вместо tcpdump wireshark'ом.

---
Twisted - фреймворк для создания сетевых приложений. На нем написан PyICQt - транспорт для джаббера - на сегодняшний день самый толковый. Twisted умеет такие штуки как epoll, kqueue. Про перл в данном отношении сказать ничего не могу сам.

Просто читал у кого то, что на перле он больше сервера писать не будет : ) Это все ИМХО.
« Last Edit: June 14, 2007, 09:29:46 by deepwalker »

Offline peretz

  • Newbie
  • *
  • Posts: 21
  • Karma: +0/-0
перл (perl) сокет сервер
« Reply #4 on: June 14, 2007, 12:59:06 »
Quote from: deepwalker
Ну ты же видишь там процесс установки соединения и тп? Вот и просмотри разницу.

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

Quote from: deepwalker
Twisted - фреймворк для создания сетевых приложений.

спасибо за "наводку", буду посмотреть!

(сколько мы еще не знаем в этой жизни.. а сколько еще нам предстоит не узнать....)
« Last Edit: June 14, 2007, 12:59:34 by peretz »

Offline nuclight

  • Full Member
  • ***
  • Posts: 207
  • Karma: +1/-2
    • http://antigreen.org
перл (perl) сокет сервер
« Reply #5 on: June 14, 2007, 13:20:18 »
Quote from: deepwalker
Twisted - фреймворк для создания сетевых приложений. На нем написан PyICQt - транспорт для джаббера - на сегодняшний день самый толковый. Twisted умеет такие штуки как epoll, kqueue. Про перл в данном отношении сказать ничего не могу сам.

Просто читал у кого то, что на перле он больше сервера писать не будет : ) Это все ИМХО.

Для какого языка? Только Питон? А то обвязки kqueue существуютт и для перла, асишный libevent уже вообщее давным-давно существует...
WBR, Nuclear Lightning
[FreeBSD][Давить зелёных]

Offline deepwalker

  • Hero Member
  • *****
  • Posts: 766
  • Karma: +8/-6
перл (perl) сокет сервер
« Reply #6 on: June 14, 2007, 14:08:20 »
Да я вроде как не противопоставлял. Просто пользуюсь именно им, и про другие рассуждать не могу, о чем честно написал : )
Обвязки это одно, а фреймворк это совсем другое. Меняете одну строчку и у вас уже оптимизированное приложение не под linux а под freebsd. Есть у твистед свои утилиты на Cях и тп. В общем не будем холиварить, главное у человека то все заработало : ))

Offline nuclight

  • Full Member
  • ***
  • Posts: 207
  • Karma: +1/-2
    • http://antigreen.org
перл (perl) сокет сервер
« Reply #7 on: June 15, 2007, 13:32:53 »
Quote from: deepwalker
Обвязки это одно, а фреймворк это совсем другое. Меняете одну строчку и у вас уже оптимизированное приложение не под linux а под freebsd. Есть у твистед свои утилиты на Cях и тп. В общем не будем холиварить, главное у человека то все заработало : ))

Да я не холиварю, мне просто интересноо, что здесь вкладывается в смысл слов и где граница. А то в libevent вообщетне нужно никаких строчек менять, например - оно само при сборке определяет. Может это тоже фреймворк? :)
WBR, Nuclear Lightning
[FreeBSD][Давить зелёных]

Offline deepwalker

  • Hero Member
  • *****
  • Posts: 766
  • Karma: +8/-6
перл (perl) сокет сервер
« Reply #8 on: June 15, 2007, 19:50:50 »
Ну вам лучше знать что это : ) Вот и расскажите.

А насчет само... а оно мне точно надо?

Offline nuclight

  • Full Member
  • ***
  • Posts: 207
  • Karma: +1/-2
    • http://antigreen.org
перл (perl) сокет сервер
« Reply #9 on: June 18, 2007, 18:16:02 »
Quote from: deepwalker
Ну вам лучше знать что это : ) Вот и расскажите.

А насчет само... а оно мне точно надо?

Да я не в курсе, что нынче фреймворками называют (насколько широк охват). А что само - так естественно, в каждой оси свои фичи, и при компиляции это определеяется вполне однозначно.
WBR, Nuclear Lightning
[FreeBSD][Давить зелёных]

Offline deepwalker

  • Hero Member
  • *****
  • Posts: 766
  • Karma: +8/-6
перл (perl) сокет сервер
« Reply #10 on: June 18, 2007, 18:41:51 »
В линуксе фич больше чем одна просто.

И я, при желании обсудить, давно бы уже сходил и прочел про twisted. И я пошел таки почитать про эту либ самую:
-- Currently, libevent supports /dev/poll, kqueue(2), select(2), poll(2) and epoll(4). Значит переключить можно (а кто б сомневался).
-- The event API provides a mechanism to execute a function when a specific event on a file descriptor occurs or after a given time has passed.

Отсюда видим, что это отнюдь не фреймворк, хотя и очень хорошая библиотека.

Фреймворк же это швейцарский нож, который позволяет вам думать только о сущности задачи, а не о работе с сокетами и тп. В twisted есть бибилиотеки для работы с протоколами xmpp, http1.0-1.1, webdav, irc ну и так далее. Те, если мне нужно было из бота отдать список последних пяти сообщений,  то в пару строк описал мини сервер, который на любой запрос на опр порту отдавал rss фид.
« Last Edit: June 18, 2007, 18:52:21 by deepwalker »

Offline nuclight

  • Full Member
  • ***
  • Posts: 207
  • Karma: +1/-2
    • http://antigreen.org
перл (perl) сокет сервер
« Reply #11 on: June 19, 2007, 16:21:02 »
Quote from: deepwalker
В линуксе фич больше чем одна просто.

Мм, а что еще?

Quote
-- The event API provides a mechanism to execute a function when a specific event on a file descriptor occurs or after a given time has passed.

Отсюда видим, что это отнюдь не фреймворк, хотя и очень хорошая библиотека.

Фреймворк же это швейцарский нож, который позволяет вам думать только о сущности задачи, а не о работе с сокетами и тп. В twisted есть бибилиотеки для работы с протоколами xmpp, http1.0-1.1, webdav, irc ну и так далее. Те, если мне нужно было из бота отдать список последних пяти сообщений,  то в пару строк описал мини сервер, который на любой запрос на опр порту отдавал rss фид.

А, теперь понятно. Значит, по задачам: мне был нужен достаточно низкий уровень - впрочем, оно и понятно, Си довольно низкоуровневой язык...
WBR, Nuclear Lightning
[FreeBSD][Давить зелёных]