shell脚本编写一个tcp服务器
时间: 2024-09-19 15:02:06 浏览: 39
在shell脚本中编写一个TCP服务器,你可以使用Linux下的socket编程来创建。以下是一个简单的bash脚本示例,它创建了一个监听连接的TCP服务器:
```bash
#!/bin/bash
# 定义端口和IP地址
PORT=8080
ADDR=localhost
# 创建一个临时文件描述符用于监听
LISTENFD=$(mktemp -t listensock.XXXXXX)
# 创建套接字并设置为非阻塞模式
echo "Creating TCP server on $ADDR:$PORT..."
trap 'rm -f "$LISTENFD"' EXIT
mkdir -p /tmp/mysocks
chmod 700 /tmp/mysocks
SOCKET=/tmp/mysocks/listen.sock
mkdir -p $(dirname $SOCKET)
echo "Listening on $SOCKET..."
bindresvport -l $SOCKET &
SERVERPID=$!
# 等待客户端连接
while :
do
read -r client_fd <&$LISTENFD
echo "Accepted connection from $client_fd."
# 启动一个新的子进程处理客户端请求
(exec bash -c "cat >$SOCKET &>/dev/null && exec echo 'Hello from Server' >&$client_fd") </dev/tcp/$ADDR/$PORT &
done
# 关闭监听文件描述符
echo "Closing listening socket..."
close $LISTENFD
# 等待子进程退出
wait $SERVERPID
echo "Server stopped."
```
这个脚本首先创建一个临时文件描述符,然后创建一个socket,并将其绑定到指定的地址和端口上。它进入一个无限循环,等待新的连接,并在每次新连接时启动一个新的子进程来处理客户端请求。
请注意,这是一个基础示例,实际应用中可能会需要更多的错误处理、日志记录以及安全措施。运行此脚本之前,请确保有适当的权限,并根据需求修改配置。
阅读全文