我在perl中創建了一個向客戶端發送消息或命令的服務器。我可以發送命令,但是當我在我創建的服務器上提示輸入命令時,如果按'輸入',服務器就會混亂起來。這是爲什麼發生?爲什麼當我按'enter'時,我的perl服務器停止工作?
這裏是我的代碼部分:
打印 「\ nConnection從IP地址$ peer_address收到端口$ peer_port」; $ closed_message =「\ n \ t終止客戶端會話...」;
while (1)
{
print "\nCommand: ";
$send_data = <STDIN>;
chop($send_data);
if ($send_data eq 'e' or $send_data eq 'E' or $send_data eq ' E' or $send_data eq ' E ' or $send_data eq 'E ' or $send_data eq ' e' or $send_data eq ' e ' or $send_data eq 'e')
{
$client_socket->send ($send_data);
close $client_socket;
print "$closed_message\n";
&options;
}
else
{
$client_socket->send($send_data);
}
$client_socket->recv($recieved_data,8000);
print "\nRecieved: $recieved_data";
}
}
if'statement is better written if if($ send_data =〜/^\ s * e \ s * $/i){...}' – 2010-05-10 20:09:29
什麼是「停止工作」的技術描述和「亂成一團」? :) – DVK 2010-05-10 20:51:52
謝謝Eric的評論。和DVK,它停止工作,因爲「命令:」是在一個while循環,這意味着它應該只停止要求輸入和終止程序,如果我按兩次「e」(一個關閉客戶端,另一個關閉服務器),但是,如果我在提示處按Enter鍵,提示會轉到下一行,並且不允許我鍵入輸入。 – David 2010-05-11 01:13:05