【发布时间】:2011-11-30 21:43:16
【问题描述】:
它是一个简单的 Perl 套接字服务器。它侦听给定端口上的命令,如果命令是“播放”,则执行一个applescript。下面的代码有两个问题。
- 执行“播放”命令后,客户端和服务器都将关闭。 (我希望服务器继续监听命令,无论是“播放”还是其他)
- 套接字不会解除绑定。 (每次重复使用都必须更改端口号)
我在 Mac 上使用终端来执行 perl 脚本,并通过另一台 Mac 上的终端 telnet 来触发它。
#!/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;
}
【问题讨论】:
标签: macos perl sockets applescript