Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> server socket 
:(
    Опции темы
YahоО
Дата 2.8.2017, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 198
Регистрация: 11.6.2015

Репутация: нет
Всего: 1



В Chrome открываю страницу своего сайта с скриптом:
Код

#!/usr/bin/perl
use IO::Socket::INET;
$| = 1;
my $socket = new IO::Socket::INET (
    LocalHost => '0.0.0.0',
    LocalPort => '8000',
    Proto => 'tcp',
    Listen => 1,
    Reuse => 1
);
die "cannot create socket $!\n" unless $socket;
my($data,$client_address,$client_port) = ('','','');
my($sec0,$min0,$hour0,$mday0,$mon0,$year0,$wday0,$yday0,$isdst0) =  localtime(time);
my($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=  localtime(time);
while($sec-$sec0<5){
 ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=  localtime(time);
    my $client_socket = $socket->accept();
    $client_address = $client_socket->peerhost();
    $client_port      = $client_socket->peerport();
    $client_socket->recv($data, 1024);
    $client_socket->send('ok');
    shutdown($client_socket, 1);
    last;
}
$socket->close();
print "Content-type: text/html\n\n";
print "<html>connection from $client_address : $client_port <br>\n received data: $data \n <br>close</html>";

и при разных модификациях этого скрипта получаю или
Gateway Time-out
или
Internal Server Error
По идее страница в любом случае должна быть показана в браузере, даже без работы второго скрипта подключающегося к сайту по порту 8000.
Что то в общем не так, а что не так?

PM MAIL   Вверх
alezzz
Дата 3.8.2017, 09:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


сплю...
**


Профиль
Группа: Участник
Сообщений: 499
Регистрация: 17.8.2009

Репутация: 2
Всего: 14



какой-то велосипед по-моему, если нужен standalone без всяких апачей попробуйте http://perldancer.org 
PM MAIL   Вверх
YahоО
Дата 3.8.2017, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 198
Регистрация: 11.6.2015

Репутация: нет
Всего: 1



Код

#!/usr/bin/perl -w
use strict;
use Socket;
my $port = 8000;
my $proto = getprotobyname('tcp');
my $server = '0.0.0.0';  # Host IP running the server
socket(SOCKET, PF_INET, SOCK_STREAM, $proto)   or die "Can't open socket $!\n";
setsockopt(SOCKET, SOL_SOCKET, SO_REUSEADDR, 1) or die "Can't set socket option to SO_REUSEADDR $!\n";
bind( SOCKET, pack_sockaddr_in($port, inet_aton($server))) or die "Can't bind to port $port! \n";
listen(SOCKET, 5) or die "listen: $!";
my ($client_addr,$name);
my($sec0,$min0,$hour0,$mday0,$mon0,$year0,$wday0,$yday0,$isdst0) =  localtime(time);
my($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=  localtime(time);
while(($sec+$min*60+$hour*60*60)-($sec0+$min0*60+$hour0*60*60)<5){
 ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime(time);
 if($client_addr = accept(NEW_SOCKET, SOCKET)){
   $name = gethostbyaddr($client_addr, AF_INET );
   print NEW_SOCKET "Smile from the server";
   close NEW_SOCKET;
 }
}
print "Content-type: text/html\n\n";
print "<html>SERVER started on port $port <br>Connection recieved from $name  <br> close</html>";

и так тоже не работает.

Точно велосипед. Эти скрипты нахожу в источниках с пометкой типа "рабочие", перепробовал несколько вариантов, но почему то ничто не срабатывает, не что зацепиться чтобы продолжить изучение темы.
Думаю хост настроен не для подобных манипуляций. Вчера нахожу еще одного free perl хостера бесплатного, создаю поддомен и тестирую эти скрипты, безрезультатно. Возможно на своем домене (не поддомене) результат все же как то бы и появился.
Апач не интересен, хотя скорее всего с ним скрипты сработали бы, т.к. localhost. Тестирую напрямую - прямо в интернете, либо работает, либо не работает.

Это сообщение отредактировал(а) YahоО - 6.8.2017, 23:23
PM MAIL   Вверх
alezzz
Дата 3.8.2017, 14:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


сплю...
**


Профиль
Группа: Участник
Сообщений: 499
Регистрация: 17.8.2009

Репутация: 2
Всего: 14



Сам сервер работает, подключитесь по telnet на порт 8000, увидите "Smile from the server" и закрытие сессии сервером. Непонятно что хотите получить, html контент в строках 22 и 23 ваш браузер не получит.
PM MAIL   Вверх
YahоО
Дата 3.8.2017, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 198
Регистрация: 11.6.2015

Репутация: нет
Всего: 1



alezzz спасибо!

html контент в строках 22 и 23 ваш браузер не получит - жаль конечно, я надеялся smile

Ищу и читаю пока о "use Dancer;".  
Теперь получается надо еще и по  telnet что найти.
Вопросы появятся, точнее они уже накапливаются - копаю ответы.




PM MAIL   Вверх
YahоО
Дата 3.8.2017, 20:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 198
Регистрация: 11.6.2015

Репутация: нет
Всего: 1



На свой пк Dancer записал. Начинает откликаться.
Что нить пробовать буду.

Это сообщение отредактировал(а) YahоО - 3.8.2017, 22:45
PM MAIL   Вверх
alezzz
Дата 4.8.2017, 08:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


сплю...
**


Профиль
Группа: Участник
Сообщений: 499
Регистрация: 17.8.2009

Репутация: 2
Всего: 14



Чтоб быстрее откликался небольшой пример:
Код

#!/usr/bin/env perl

use strict;
use Dancer;

set port => 8000;

get '/' => sub {
    return 'Test';
};

dance;

PM MAIL   Вверх
YahоО
Дата 4.8.2017, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 198
Регистрация: 11.6.2015

Репутация: нет
Всего: 1



За пример спасибо!

Вчера начал с такого примера:
Код

get '/hello/:name' => sub {
        "Hello ".param('name');
};

ну и потратил почти час на чтение, чтоб получить первый отклик, потому что в моем примере была передача текста, а я ожидал что на :3000 сразу что то должно прийти, а надо что то же было и указать после hello.
А Ваш пример был бы подхвачен сразу же, и для старта он был бы лучше.

PM MAIL   Вверх
alezzz
Дата 4.8.2017, 14:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


сплю...
**


Профиль
Группа: Участник
Сообщений: 499
Регистрация: 17.8.2009

Репутация: 2
Всего: 14



Начинайте с самого простого, в вашем случае нужно было в браузере запросить http://<ip>:3000/hello/user чтоб получить на странице "Hello user".
PM MAIL   Вверх
YahоО
Дата 4.8.2017, 15:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 198
Регистрация: 11.6.2015

Репутация: нет
Всего: 1



В браузере запросить http://<ip>:3000/hello/user пока что это только localhost, с этим все в порядке, работает, это мне понятно.

Не понятно: 

1) dancer слушает и отвечает ведь не по протоколу ws, а html js работает по протоколу WebSocket над TCP.  
Пробовал ajax отправить на localhost:3000, но
XMLHttpRequest cannot load file:///D:/........ Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https.
Получается на сервере надо иметь тоже протокол ws ?

2) Если все же dancer сработает на сервере сайта, то ведь надо его туда как то записать, т.е. просить support чтобы инсталлировали. А поскольку хостер бесплатный, то он может проигнорировать. В таком случае мне придется из dancer все методы собирать в новый dancer3, в один файл и уже его по фтп отправлять, чтобы тестировать дальше?
PM MAIL   Вверх
alezzz
Дата 4.8.2017, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


сплю...
**


Профиль
Группа: Участник
Сообщений: 499
Регистрация: 17.8.2009

Репутация: 2
Всего: 14



по вебсокетам тут https://metacpan.org/pod/release/SUKRIA/Dan.../WebSockets.pod , у меня работает один мелкий сервис по такому примеру.

PM MAIL   Вверх
YahоО
Дата 4.8.2017, 19:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 198
Регистрация: 11.6.2015

Репутация: нет
Всего: 1



plackup -s Twiggy wsdemo.pl
эта строчка - заморочка, все ей не хватает какого либо .pm,
и кто вообще придумал когда то модули, пакеты, инкапсуляцию и адресацию, все разбито по кусочкам, нет чтобы все и сразу и в одном файле smile 
и не умирал бы cpan когда сегодня хочешь скачать/записать Plack или Danser2.



Это сообщение отредактировал(а) YahоО - 7.8.2017, 00:11
PM MAIL   Вверх
YahоО
Дата 7.8.2017, 00:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 198
Регистрация: 11.6.2015

Репутация: нет
Всего: 1



"Smile from the server"  - есть отклик, но только там на сайте, только внутри сервера,  почему то.
Хост на видит запросы клиента с пк. Браузер не может соединиться с сайтом.
Как можно соединить сайт с пк?


Это сообщение отредактировал(а) YahоО - 8.8.2017, 13:44
PM MAIL   Вверх
YahоО
Дата 7.8.2017, 19:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 198
Регистрация: 11.6.2015

Репутация: нет
Всего: 1



"Outgoing connections are disabled for accounts with the free hosting plan." - ответ моего хостера, что впрочем и следовало ожидать.

Это сообщение отредактировал(а) YahоО - 8.8.2017, 13:42
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl: CGI программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к CGI программированию
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", качать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: разработка для Web | Следующая тема »


 




[ Время генерации скрипта: 0.1613 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.