You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

125 lines
3.4 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#!/bin/bash
# 一键启动所有服务脚本
echo "========================================="
echo " TCP点对点聊天系统 - 一键启动"
echo "========================================="
echo ""
# 检查Java版本
echo "检查Java环境..."
if ! command -v java &> /dev/null; then
echo "❌ 错误: 未找到Java请先安装Java 11或更高版本"
exit 1
fi
java -version 2>&1 | head -n 1
echo ""
# 下载Gson库如果需要
if [ ! -f "lib/gson-2.10.1.jar" ]; then
echo "📦 下载Gson库..."
mkdir -p lib
if command -v wget &> /dev/null; then
wget -q -O lib/gson-2.10.1.jar https://repo1.maven.org/maven2/com/google/code/gson/gson/2.10.1/gson-2.10.1.jar
elif command -v curl &> /dev/null; then
curl -s -o lib/gson-2.10.1.jar https://repo1.maven.org/maven2/com/google/code/gson/gson/2.10.1/gson-2.10.1.jar
else
echo "❌ 错误: 需要wget或curl来下载依赖库"
echo "请手动下载: https://repo1.maven.org/maven2/com/google/code/gson/gson/2.10.1/gson-2.10.1.jar"
echo "并保存到: lib/gson-2.10.1.jar"
exit 1
fi
if [ -f "lib/gson-2.10.1.jar" ]; then
echo "✅ Gson库下载成功"
else
echo "❌ Gson库下载失败"
exit 1
fi
fi
echo ""
# 编译命令行版本
echo "🔨 编译命令行版本..."
mkdir -p bin
javac -d bin -encoding UTF-8 src/common/*.java src/server/ChatServer.java src/server/ClientHandler.java src/client/ChatClient.java 2>&1
if [ $? -eq 0 ]; then
echo "✅ 命令行版本编译成功"
else
echo "❌ 命令行版本编译失败"
exit 1
fi
echo ""
# 编译Web版本
echo "🔨 编译Web版本..."
javac -cp "lib/gson-2.10.1.jar" -d bin -encoding UTF-8 src/common/*.java src/server/WebSocketServer.java src/server/WebSocketClient.java 2>&1
if [ $? -eq 0 ]; then
echo "✅ Web版本编译成功"
else
echo "❌ Web版本编译失败"
exit 1
fi
echo ""
# 选择启动模式
echo "请选择启动模式:"
echo " 1) Web图形界面服务器 (端口 8080)"
echo " 2) 命令行TCP服务器 (端口 8888)"
echo " 3) 命令行客户端"
echo " 4) 同时启动Web和TCP服务器"
echo ""
read -p "请输入选项 [1-4]: " choice
case $choice in
1)
echo ""
echo "🚀 启动Web图形界面服务器..."
echo "访问地址: http://localhost:8080"
echo "按 Ctrl+C 停止服务器"
echo ""
cd bin
java -cp ".:../lib/gson-2.10.1.jar" server.WebSocketServer
;;
2)
echo ""
echo "🚀 启动命令行TCP服务器..."
echo "监听端口: 8888"
echo "按 Ctrl+C 停止服务器"
echo ""
cd bin
java server.ChatServer
;;
3)
echo ""
echo "🚀 启动命令行客户端..."
echo ""
cd bin
java client.ChatClient
;;
4)
echo ""
echo "🚀 同时启动Web和TCP服务器..."
echo "Web服务器: http://localhost:8080"
echo "TCP服务器: 端口 8888"
echo "按 Ctrl+C 停止所有服务器"
echo ""
cd bin
java -cp ".:../lib/gson-2.10.1.jar" server.WebSocketServer &
WEB_PID=$!
java server.ChatServer &
TCP_PID=$!
# 等待用户中断
trap "kill $WEB_PID $TCP_PID 2>/dev/null; echo ''; echo '服务器已停止'; exit" INT
wait
;;
*)
echo "❌ 无效选项"
exit 1
;;
esac