Socket Запуск На Сервере

  • Автор темы VanJo
  • Дата начала
V

VanJo

#1
Здравствуйте. Нашел несколько примеров клиент-сервер, запускаю на своем компе сначала perl-сервер, потом perl-клиент - все работает, просходит обмен сообщениями и нормальное закрытие сокета. Записал файл сервера по фтп себе на сайт, присвоил 701 права, но запустить не получается, и не знаю как это сделать потому пишу здесь о помощи.
( понятно что все это где то описано, но видно не докопался :)
 
V

VanJo

#2
Код:
#!/usr/bin/perl
use IO::Socket::INET;
$| = 1;
my ($socket,$client_socket,$peeraddress,$peerport,$cop);
$socket = new IO::Socket::INET (
LocalHost => '127.0.0.1',
LocalPort => '5000',
Proto => 'tcp',
Listen => 5,
Reuse => 1
) or die "ERROR in Socket Creation : $!\n";

print "Content-type: text/html\n\n";
print "<html>";
print "SERVER Waiting for client connection on port 5000<br>\n";

while(!$cop){
$client_socket = $socket->accept();
$peeraddress = $client_socket->peerhost() || die "ERROR in peerhost : $!\n";;
$peerport	= $client_socket->peerport() || die "ERROR in peerport : $!\n";;
print "Accepted New Client Connection From : $peeraddress, $peerport<br>\n";
print $client_socket "!DATA from Server!\n";
$client_socket->send($data);
my $data = <$client_socket>;
$client_socket->recv($data,1024);
print "Received from Client : $data<br>\n";
$cop = 1;
}
$socket->close();
print "</html>";
LocalHost => '127.0.0.1' заменяю на IP сервера, его беру:
Код:
use Socket;
$myserverhostname = 'myserver.ru';
$packed = gethostbyname($myserverhostname) || die "Couldn't resolve address for $hostname: $!\n";
$address = inet_ntoa($packed);
print "$address\n";
В браузере пишу адрес этого файла
www.myhost/cgi-bin/myserv.pl
и дальше запускаю второй файл у себя на компе :
Код:
#!/usr/bin/perl -w
use strict;
use IO::Socket;
socket(SOCK, PF_INET, SOCK_STREAM, getprotobyname('tcp'));
my $host = "127.0.0.1"; # тут 127.0.0.1 заменяю на полученный IP
my $port = 5000;
my $paddr = sockaddr_in($port, inet_aton($host));
connect(SOCK, $paddr) or die("No connect!");;
send(SOCK, "GET\nHOST: ${host}", 0);
my @data = <SOCK>;
print join(" ", @data);
close(SOCK);
 
V

VanJo

#3
Нашел:
To run the server in background mode issue the following command on Unix prompt $sever.pl&
Получается что я не смогу сам без писем поддержке хостера support@myhost запустить мой сокет ?
 
V

VanJo

#4
Что то я не так написал?
Этот пост просмотрели десятки людей и никто сокетами не пользуется?
 
V

VanJo

#6
Вот как, перлом не пользуются ... , ну и напрасно.
Хотя судя по количеству просмотров даже только этого поста народ интересуется и перлом и сокетами :)
 
V

VanJo

#7
Счет любопытствующих пошел уже сотнями (2), и никакого толку,
похоже смотрят только интересующиеся неучи, как я например : (
и подсказать никто не хочет || не может (goto похоже).
Половину ответа я уже нашел, хостер снял ограничение по биндингу,
и серверный сокет отозвался, но как то интересно. Пишет сервер на запрос клиента "No dataClient", т.е. все же слышит и как то отвечает, но не хочет воспринимать посылаемые тексты от клиента.
Еще интереснее картина происходит в html js. Сервер слышит подключение со странички на моем компе через браузер, но ни сам не воспринимает посылаеиый текст, и не отправляет ничегошеньки и спокойно отключается.
Что там у хостера не один запрет на апаче был ?, т.е. хостер что то разрешил, а что то нет? Такое может быть?