Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > Perl
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.08.2009, 04:02   #1
TDrive
Пользователь
 
Регистрация: 22.07.2009
Сообщений: 95
По умолчанию Клиент-Сервер на perl

вот сервер:
Код:
#!/usr/bin/perl
use Socket;
use IO::Handle;
socket(SERVER, AF_INET, SOCK_STREAM, getprotobyname('tcp'));
setsockopt(SERVER, SOL_SOCKET, SO_REUSADDR, 1);
bind (SERVER, sockaddr_in( 2000, INADDR_ANY));
listen (SERVER,SOMAXCONN);
warn "waiting for incoming connections... \n";
while(1){
        next unless my $remote_addr = accept(SESSION, SERVER);
        warn "Connection n";
        if(fork==0){
  SESSION->autoflush(1);
                while(<SESSION>){
                        chomp($_);
                        print SESSION "(".$_.")\n";
                }
                print "Connection finished\n";
                exit 0;
        }
}
close SERVER;
вот клиент
Код:
#!/usr/bin/perl
use Socket;
use IO::Handle;
socket(CLIENT, AF_INET, SOCK_STREAM, getprotobyname('tcp'));
connect(CLIENT, sockaddr_in(2000,inet_aton('127.0.0.1')));
CLIENT->autoflush(1);
my $child=fork();
if($child){
        print "main started:\n";
        while(defined ($line = <CLIENT>)){print STDOUT $line;}
}
else{
        print "child started:\n";
        while(defined($line=<STDIN>)){print CLIENT $line;}
}
close CLIENT;
в кратце логика работы:
сервер висит на 2000 порту и ждёт подключения при подключении создаёт новый процесс и продолжает ждать следующего подключения. процесс принимает от клиента все строчки текста и отправляет их обратно когда подключение обрывается процесс убивает себя.

клиент конектится к серверу на 2000 порт и делится на 2 процесса
1 процесс ждёт ввод с клавиатуры и отправляет текст на сервер
2 процесс слушает сервер и выводит всё на монитор
работает всё на windows
проблема в том что когда в клиенте вводишь первую строчку и нажимаешь enter клиент виснет
из за чего так происходит мне непонятно.
есть тут люди которые разбираются в этом?

Последний раз редактировалось TDrive; 25.08.2009 в 04:04.
TDrive вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
БД клиент-сервер [62]Gambit Помощь студентам 5 25.05.2010 10:49
Сервер клиент Dr.zlo Работа с сетью в Delphi 13 15.06.2009 21:43
Возможно-ли Клиент-серверное приложение типа Клиент(Pascal) а сервер(CGI)? Demol Работа с сетью в Delphi 1 21.04.2009 16:18
клиент-сервер Orsika2006 Общие вопросы .NET 1 29.03.2009 13:09
Клиент-сервер-клиент Кронос Работа с сетью в Delphi 3 24.08.2007 07:57