Ваш сервер блокирует вызов $client_socket->recv(...)
- сервер и клиент заблокированы, каждый ждет ответа другого.
Попробуйте поставить эту строку после chop()
:
next unless length $send_data; # restart the loop if no command submitted
Теперь, доработав ваш пример, я думаю, что происходит вот что:
$send_data = <STDIN>; # $send_data := "\n"
# you just input a blank line with [ENTER]
chop($send_data); # $send_data := ""
$client_socket->send($send_data) # you send a zero-length buffer
# On my system, this does generate a syscall for
# the sender, but no data is transmitted
$client_socket->recv($buf, 8192) # Hang indefinitely. Your client application
# received no command, and so it has sent no
# response.
Это всего лишь предположение. Как прокомментировал @ DVK , мы на самом деле не знаем ваших симптомов, и из вашего описания трудно угадать, что происходит. Это, однако, напоминает проблему, которую я укусил в прошлом.