Это простой сервер сокетов Perl.Он прослушивает команды для данного порта и выполняет яблочный скрипт, если команда «play».Есть две проблемы с кодом ниже.
- После выполнения команды play и клиент, и сервер закрываются.(Я хочу, чтобы сервер продолжал прислушиваться к командам, будь то «воспроизведение» или иным образом)
- Сокеты не отсоединяются.(Мне нужно менять номер порта каждый раз, когда я его повторно использую)
Я использую Terminal на mac для запуска сценария perl и telnet через терминал на другом mac для его запуска.
#!/usr/bin/perl -w
use warnings;
use IO::Socket;
use Net::hostent;
$PORT = 8000;
$server = IO::Socket::INET->new( Proto => 'tcp',
LocalPort => $PORT,
Listen => 5,
Reuse => 1) or die "can't setup server" unless $server;
print "SERVER Waiting on port $PORT\n";
while ($client = $server->accept()) {
$client->autoflush(1);
print $client "Command:\r\n";
while (<$client>) {
if (/play/i) {
exec("osascript '/Users/user/Desktop/play.app'");
} else {
print $client "invalid command\r\n";
}
} continue {
print $client "Command: ";
} close $client;
}