有没有办法在bash中编写服务器程序?
基本上,我希望能够从PHP客户端连接到bash服务器,并发送将在控制台中显示的消息。
发布于 2014-04-25 08:04:30
坏消息第一个
不幸的是,在纯 Bash中似乎没有希望做到这一点。
即使是在做一个
exec 3<> /dev/tcp/<ip>/<port>
不起作用,因为这些特殊文件是在connect()
而不是bind()
上实现的。如果我们看一下来源,这一点是显而易见的。
例如,在Bash4.2中,函数_netopen4()
(或IPv6的_netopen6()
)如下所示(lib/sh/netopen.c
):
s = socket(AF_INET, (typ == 't') ? SOCK_STREAM : SOCK_DGRAM, 0);
if (s < 0)
{
sys_error ("socket");
return (-1);
}
if (connect (s, (struct sockaddr *)&sin, sizeof (sin)) < 0)
{
e = errno;
sys_error("connect");
close(s);
errno = e;
return (-1);
}
而不是
可以使用命令行工具,如nc
。例如,
nc -l <port>
将侦听localhost:<port>
上的传入连接。
发布于 2014-04-25 08:21:23
在GIT上有一个项目,它实现了一个完全用bash编写的HTTP web服务器;
发布于 2014-04-25 08:05:50
创建一个进程,该进程从套接字读取数据,通过shell执行数据,并打印回响应。可以使用以下脚本,该脚本侦听端口9213:
ncat -l -kp 9213 | while read line; do
out=$($line)
# or echo $line
echo $out
done
如果您想要的只是显示数据,那么ncat -l -p 9213
就足够了。
https://stackoverflow.com/questions/23287374
复制相似问题