Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Perl и сокеты, проблема с выводом в браузер / 10 сообщений из 10, страница 1 из 1
25.12.2013, 21:22
    #38512539
morgot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Perl и сокеты, проблема с выводом в браузер
Подскажите пожалуйста по коду. Хочу написать примитивнейший скрипт, который открывает допустим 3030 порт, получает откуда-то извне хтмл и отображает его в браузер человеку. Но не получается - так код выводит контент бесконечно. Ежели убрать цикл while, то не выводит вообще. В чем может быть проблема?

Код: ruby
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.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
#Perl
use 5.010;
use warnings;
use strict;
use Socket;
use LWP::UserAgent;

my $ua = LWP::UserAgent->new(agent=>"Perl browser");
my $content = $ua->get("http://kuraev.ru/smf/")->content;

my $port = 3030;
$port = getservbyname($port,'tcp') if $port =~ /\D/;
	die "Invalid port" unless $port;
socket(S,PF_INET,SOCK_STREAM,0) || die "socket: $!";
	say "socket good";
setsockopt(S,SOL_SOCKET,SO_REUSEADDR,pack('l',1)) || die "setsockopt: $!";
	say "setsockopt good";
bind(S,sockaddr_in($port,INADDR_ANY)) or die ("bind $!");
	say "bind good";
listen(S,SOMAXCONN) or die("listen $!");
	say "listen good";
select(STDOUT);
for ( ; accept(S1,S); close(S1))
{
say "accept good";
while(1)
	{
	#$tmp = send(S1,$content,0) or die ("send $!");
	print S1 $content;
	#sleep(5);
	#last;
	#shutdown(S1,1);
	}
}

sub file_get_contents 
{ 
  my ($filename) = @_; 
  open IN, "<", $filename or return undef; 
  my @all = <IN>; 
  close IN; 
   
  my $res = join("", @all); 
  return $res; 
}
...
Рейтинг: 0 / 0
26.12.2013, 13:03
    #38513006
Black
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Perl и сокеты, проблема с выводом в браузер
10 раз перечитал ваш вопрос, так и не понял, что вы хотите.

Зачем открывать порт, если надо выдать данные в браузер?!
...
Рейтинг: 0 / 0
26.12.2013, 16:12
    #38513335
Warstone
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Perl и сокеты, проблема с выводом в браузер
Он проксю строит. Но зачем - вопрос открытый.
...
Рейтинг: 0 / 0
26.12.2013, 20:22
    #38513576
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Perl и сокеты, проблема с выводом в браузер
Чтоб с работы вконтакт/одноквасники/прочее лазить...
...
Рейтинг: 0 / 0
26.12.2013, 23:01
    #38513670
morgot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Perl и сокеты, проблема с выводом в браузер
Да, я хочу написать примитивнейший прокси. Цель тут одна - есть проект, на котором какие-то мистические глюки по части сетей (не суть важно что). Никто из сисадминов не может толком понять, что к чему. Я хочу методом исключения, найти где ошибка - в веб сервере, базе данных, или сам сервер глючный. Поэтому нужно приложение, которое в обход апача/энжинкс выведет людям что нибудь в браузер. Как такое сделать? Или может есть готовый код для такой ерунды, мне не обязательно чтобы контент брался с внешнего сайта, да хоть с файла или генерировал мусорную строку , лишь бы в обход веб сервера, открыл сокет и вывел юзеру чего-нибудь.
...
Рейтинг: 0 / 0
27.12.2013, 12:08
    #38514059
artas
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Perl и сокеты, проблема с выводом в браузер
morgot,

так готовые ж есть, зачем велик изобретать ?
...
Рейтинг: 0 / 0
27.12.2013, 12:11
    #38514064
morgot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Perl и сокеты, проблема с выводом в браузер
artas, тогда подскажите какое-то готовое решение; чтоб было достаточно простое и не требовало левых библиотек и т.д. Я не линуксоид, мне просто надо проверить работу сети в обход апачей.
...
Рейтинг: 0 / 0
27.12.2013, 13:15
    #38514170
Electric200
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Perl и сокеты, проблема с выводом в браузер
+ тоже не понял суть идеи. В обход веб сервера , базы данных. Какой то кламбур выходит.
В обход веб сервера выведет что то в браузер с файла или внешнего источника? .
Если с файла, создайте html файл у себя на компе и откройте браузером.
Если с удаленного ресурса по HTTP, то на том ресурсе должен быть веб сервер. что бы обработать входящий HTTP запрос к примеру на 80 порт. Если просто проверить сокетное соединение между серверами то, с стороны сервера можно на чем угодно написать listener порта, куда будет подключатся клиент. Главное, что бы это было демон.
Вообще печально, что вы проверяет логику работы базы данных и веб сервера вот таким вот способом. Ведь все можно проверить локально. Но для начала опишите проблему более подробно.
...
Рейтинг: 0 / 0
27.12.2013, 13:55
    #38514225
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Perl и сокеты, проблема с выводом в браузер
morgotнадо проверить работу сети в обход апачей.Это... как? Ну, вместо апача можно какой-то другой вебсервер поднять, lighttpd, например. Если хочется именно на перле - нечто вроде тынца гуглится за минуту...
...
Рейтинг: 0 / 0
27.12.2013, 16:10
    #38514414
artas
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Perl и сокеты, проблема с выводом в браузер
morgot,

гугл в помощь, первое что нашел

https://code.google.com/p/python-proxy/
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Perl и сокеты, проблема с выводом в браузер / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]