|
|
#!/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
|