Forum Webscript.Ru

Программирование => Perl => Тема начата: mstf от 01 Июля 2005, 10:14:03

Название: помогите разобраться с tcp
Отправлено: mstf от 01 Июля 2005, 10:14:03
Есть два модуля один сервер
//////////////////
#!/usr/bin/perl -w
    use strict;
    use IO::Socket;
        use warnings;
    my $port = 2346;

    my $server = new IO::Socket::INET (
                                    LocalPort  => $port,
                                    Type => SOCK_STREAM,
                                    Listen =>10
                                        )
           or die "не могу подключиться";

        local $| =1;
                while (my $client = $server->accept()) {
                        my $response = <$client>;
                        print ("Form client: $response\\n");
                        print ($client "answer");
                        }

close ($server) or die ("i can\'t");
/////////////////

другой клиент
/////////////////
#!/usr/bin/perl -w
    use strict;
    use IO::Socket;
    my $host = \'localhost\';
    my $port = 2346;

    my $socket = new IO::Socket::INET (
                                    PeerAddr  => $host,
                                    PeerPort  => $port,
                                    Proto => "tcp",
                                    Type => SOCK_STREAM)
           or die "не могу подключиться";

        local $| =1;
        print ($socket "texxxxxxtt");

        my $response = <$socket>;
        print("$response done\\n");

close ($socket) or die ("i can\'t");
/////////////////

Вопрос возник. В серверной части видно, что я получив сообщение от клиента вывожу в консоль полученное сообщение и пытаюсь ему отправить ответ, но ответ почему то  клиенту не приходит. Связано ли это с тем что я использую
while (my $client = $server->accept()) {
}
?
Я так думаю что сервер слушает порт и не может отправить сообщение на этот порт. Так ли это. Или может проблемы кроется в другом. Есть ли возможность постоянно слушать порт и при поступлении сообщений отправлять ответ.

Спасибо.