ubuntu中设计两个程序,要求用命名管道实现聊天程序,每次发言后自动在后面增加当前系统时间。增加结束字符,比如最后输入“88”后结束进程
时间: 2024-02-27 12:52:46 浏览: 65
命名管道实现点对点聊天程序
5星 · 资源好评率100%
好的,我可以为你提供两个程序,分别为客户端和服务器端,使用命名管道实现聊天功能,并在每次发言后自动添加当前系统时间。
#### 服务器端
```bash
#!/bin/bash
# 定义命名管道名称
fifo_name=chat.fifo
# 如果管道文件存在,先删除
[ -e $fifo_name ] && rm $fifo_name
# 创建管道文件
mkfifo $fifo_name
# 打开管道文件
exec 3<> $fifo_name
echo "服务器已启动,等待客户端连接..."
while read line <&3; do
# 如果客户端发送结束信号,退出循环
if [ "$line" == "88" ]; then
break
fi
# 添加时间戳
now=$(date +"%Y-%m-%d %H:%M:%S")
message="[$now] $line"
# 输出消息到控制台
echo $message
done
# 关闭管道
exec 3<&-
exec 3>&-
rm $fifo_name
echo "服务器已关闭。"
```
#### 客户端
```bash
#!/bin/bash
# 定义命名管道名称
fifo_name=chat.fifo
# 打开管道文件
exec 3<> $fifo_name
echo "客户端已启动。"
while true; do
# 读取用户输入的消息
read -p "> " line
# 添加时间戳
now=$(date +"%Y-%m-%d %H:%M:%S")
message="[$now] $line"
# 发送消息到服务器
echo $message >&3
# 如果用户输入结束信号,退出循环
if [ "$line" == "88" ]; then
break
fi
done
# 关闭管道
exec 3<&-
exec 3>&-
echo "客户端已关闭。"
```
这两个程序使用了命名管道实现聊天功能,服务器端等待客户端连接,并通过管道接收客户端发送的消息,添加时间戳后输出到控制台;客户端通过管道向服务器发送消息,添加时间戳后发送给服务器。用户输入结束信号“88”后,服务器和客户端都会退出进程。
阅读全文