Сразу извинюсь так как я запускаю скрипт на виндах а форум посвящён линуксу. просто на 2 других форумах программистов мне не смогли помочь
вот сервер
#!/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";
syswrite(CLIENT,$data) while sysread(STDIN,$data,1024);}
else{
print "child started:\n";
syswrite(STDOUT,$data) while sysread(CLIENT,$data,1024);}
close CLIENT;
в кратце логика: сервер висит на 2000 порту, принимает от клиента строчку текста потом отправляет её обратно клиенту. клиент когда подключается к серверу делится на 2 процесса 1 процесс читает с клавиатуры и отправляет серверу 2 процесс слушает сервер и выводит на монитор проблема в том что когда клиент отправляет первую строчку текста он виснет. думаю проблема в том что 2 процесса клиента вместе используют <CLIENT> так как если один процесс отключить 2 нормально работает но в чём именно проблема понять не могу. заранее спс за помощь