diff --git a/CMakeLists.txt b/CMakeLists.txt
index c2bdad1..298afa3 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,66 +1,3 @@
-cmake_minimum_required(VERSION 3.16)
-
-project(ClientChat VERSION 0.1 LANGUAGES CXX)
-
-set(CMAKE_AUTOUIC ON)
-set(CMAKE_AUTOMOC ON)
-set(CMAKE_AUTORCC ON)
-
-set(CMAKE_CXX_STANDARD 17)
-set(CMAKE_CXX_STANDARD_REQUIRED ON)
-
-# 查找模块
-find_package(Qt6 COMPONENTS
-Core
-Protobuf
-Widgets
-Network
-WebSockets
-Multimedia
-QUIET)
-
-set(QT_VERSION_MAJOR 6)
-
-# proto文件
-file(GLOB PB_FILES
- proto/*.proto
-)
-
-# 源文件
-file(GLOB PROJECT_SOURCES
- model/*.h model/*.cpp
- network/*.h network/*.cpp
- *.h *.cpp
- *.ui
- *.qrc
-)
-
-if(ANDROID)
- # Android 平台:附加 Android 可部署资源
- qt_add_executable(ClientChat
- MANUAL_FINALIZATION
- ${PROJECT_SOURCES}
- )
-
- # 指定自定义的 Android 部署目录
- # set_property(TARGET ClientChat APPEND PROPERTY QT_ANDROID_PACKAGE_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/android")
-else()
- if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)
-
- qt_add_executable(ClientChat
- MANUAL_FINALIZATION
- ${PROJECT_SOURCES}
- )
-
- qt_add_protobuf(ClientChat PROTO_FILES ${PB_FILES})
- endif()
-endif()
-
-# 链接动态库
-target_link_libraries(ClientChat PRIVATE
-Qt6::Core
-Qt${QT_VERSION_MAJOR}::Widgets
-Qt6::Network
-Qt6::WebSockets
-Qt6::Multimedia
-)
\ No newline at end of file
+cmake_minimum_required(VERSION 3.1.3)
+project(ChatClient)
+add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/ChatClient)
diff --git a/CMakePresets.json b/CMakePresets.json
deleted file mode 100644
index 56c4ce3..0000000
--- a/CMakePresets.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
- "version": 3,
- "configurePresets": [
- {
- "hidden": true,
- "name": "Qt",
- "cacheVariables": {
- "CMAKE_PREFIX_PATH": "$env{QTDIR}"
- },
- "vendor": {
- "qt-project.org/Qt": {
- "checksum": "wVa86FgEkvdCTVp1/nxvrkaemJc="
- }
- }
- }
- ],
- "vendor": {
- "qt-project.org/Presets": {
- "checksum": "67SmY24ZeVbebyKD0fGfIzb/bGI="
- }
- }
-}
\ No newline at end of file
diff --git a/CMakeUserPresets.json b/CMakeUserPresets.json
deleted file mode 100644
index 20b3da0..0000000
--- a/CMakeUserPresets.json
+++ /dev/null
@@ -1,76 +0,0 @@
-{
- "version": 3,
- "configurePresets": [
- {
- "name": "Qt-Debug",
- "inherits": "Qt-Default",
- "binaryDir": "${sourceDir}/out/build/debug",
- "cacheVariables": {
- "CMAKE_BUILD_TYPE": "Debug",
- "CMAKE_CXX_FLAGS": "-DQT_QML_DEBUG"
- },
- "environment": {
- "QML_DEBUG_ARGS": "-qmljsdebugger=file:{74e0e0b6-0fbf-4a0d-93e9-c8349734743b},block"
- }
- },
- {
- "name": "Qt-Release",
- "inherits": "Qt-Default",
- "binaryDir": "${sourceDir}/out/build/release",
- "cacheVariables": {
- "CMAKE_BUILD_TYPE": "Release"
- }
- },
- {
- "hidden": true,
- "name": "Qt-Default",
- "inherits": "6.9.0",
- "vendor": {
- "qt-project.org/Default": {
- "checksum": "ogzyvXATpX3FyMqBErb6IpyYPKI="
- }
- }
- },
- {
- "hidden": true,
- "name": "5.14.0",
- "inherits": "Qt",
- "environment": {
- "QTDIR": "E:/Qt/Qt5.14.0/5.14.0/msvc2017_64"
- },
- "architecture": {
- "strategy": "external",
- "value": "x64"
- },
- "generator": "Ninja",
- "vendor": {
- "qt-project.org/Version": {
- "checksum": "3cWOu5Lvdo5oEp6qU2AAXDl3CO8="
- }
- }
- },
- {
- "hidden": true,
- "name": "6.9.0",
- "inherits": "Qt",
- "environment": {
- "QTDIR": "E:/Qt/Qt6.9.0/6.9.0/msvc2022_64"
- },
- "architecture": {
- "strategy": "external",
- "value": "x64"
- },
- "generator": "Ninja",
- "vendor": {
- "qt-project.org/Version": {
- "checksum": "5GMO6/002JUUngppM/iaIHJADvk="
- }
- }
- }
- ],
- "vendor": {
- "qt-project.org/Presets": {
- "checksum": "Dlc1I+gqV2Q029C9SawBnzSygCA="
- }
- }
-}
\ No newline at end of file
diff --git a/ChatClient/CMakeLists.txt b/ChatClient/CMakeLists.txt
new file mode 100644
index 0000000..31b1663
--- /dev/null
+++ b/ChatClient/CMakeLists.txt
@@ -0,0 +1,141 @@
+cmake_minimum_required(VERSION 3.16)
+
+project(ClientChat VERSION 0.1 LANGUAGES CXX)
+
+set(CMAKE_AUTOUIC ON)
+set(CMAKE_AUTOMOC ON)
+set(CMAKE_AUTORCC ON)
+
+set(CMAKE_CXX_STANDARD 17)
+set(CMAKE_CXX_STANDARD_REQUIRED ON)
+
+# 查找模块
+find_package(Qt6 COMPONENTS
+Core
+Protobuf
+Widgets
+Network
+WebSockets
+Multimedia
+QUIET)
+
+set(QT_VERSION_MAJOR 6)
+
+# 设置 UI 文件的搜索路径
+set(CMAKE_AUTOUIC_SEARCH_PATHS ${CMAKE_CURRENT_SOURCE_DIR}/ui)
+
+# proto文件
+file(GLOB PB_FILES
+ proto/*.proto
+)
+
+# 源文件
+# file(GLOB PROJECT_SOURCES
+# include/model/*.h src/model/*.cpp
+# include/network/*.h src/network/*.cpp
+# include/*.h src/*.cpp
+# ui/*.ui
+# resource/qrc/*.qrc
+# )
+
+# 显式列出源文件
+set(PROJECT_SOURCES
+ src/model/datacenter.cpp
+ src/network/netclient.cpp
+ src/addfrienddialog.cpp
+ src/choosefrienddialog.cpp
+ src/groupsessiondetailwidget.cpp
+ src/historymessagewidget.cpp
+ src/loginwidget.cpp
+ src/main.cpp
+ src/mainwidget.cpp
+ src/messageeditarea.cpp
+ src/messageshowarea.cpp
+ src/phoneloginwidget.cpp
+ src/selfinfowidget.cpp
+ src/sessiondetailwidget.cpp
+ src/sessionfriendarea.cpp
+ src/soundrecorder.cpp
+ src/toast.cpp
+ src/userinfowidget.cpp
+ src/verifycodewidget.cpp
+)
+
+# 显式列出头文件
+set(PROJECT_HEADERS
+ include/model/data.h
+ include/model/datacenter.h
+ include/network/netclient.h
+ include/addfrienddialog.h
+ include/choosefrienddialog.h
+ include/debug.h
+ include/groupsessiondetailwidget.h
+ include/historymessagewidget.h
+ include/loginwidget.h
+ include/mainwidget.h
+ include/messageeditarea.h
+ include/messageshowarea.h
+ include/phoneloginwidget.h
+ include/selfinfowidget.h
+ include/sessiondetailwidget.h
+ include/sessionfriendarea.h
+ include/soundrecorder.h
+ include/toast.h
+ include/userinfowidget.h
+ include/verifycodewidget.h
+)
+
+# 显式列出 UI 文件
+set(PROJECT_FORMS
+ ui/mainwidget.ui
+)
+
+# 显式列出资源文件
+set(PROJECT_RESOURCES
+ resource.qrc
+)
+
+if(ANDROID)
+ # Android 平台:附加 Android 可部署资源
+ qt_add_executable(ClientChat
+ MANUAL_FINALIZATION
+ # ${PROJECT_SOURCES}
+ ${PROJECT_SOURCES}
+ ${PROJECT_HEADERS}
+ ${PROJECT_FORMS}
+ ${PROJECT_RESOURCES}
+ )
+
+ # 指定自定义的 Android 部署目录
+ # set_property(TARGET ClientChat APPEND PROPERTY QT_ANDROID_PACKAGE_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/android")
+else()
+ if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)
+
+ qt_add_executable(ClientChat
+ MANUAL_FINALIZATION
+ # ${PROJECT_SOURCES}
+ ${PROJECT_SOURCES}
+ ${PROJECT_HEADERS}
+ ${PROJECT_FORMS}
+ ${PROJECT_RESOURCES}
+ )
+
+ qt_add_protobuf(ClientChat PROTO_FILES ${PB_FILES})
+ endif()
+endif()
+
+# 添加包含目录
+target_include_directories(ClientChat PRIVATE
+ ${CMAKE_CURRENT_SOURCE_DIR}/include
+ ${CMAKE_CURRENT_SOURCE_DIR}/include/model
+ ${CMAKE_CURRENT_SOURCE_DIR}/include/network
+)
+
+# 链接动态库
+target_link_libraries(ClientChat PRIVATE
+Qt6::Core
+Qt${QT_VERSION_MAJOR}::Widgets
+Qt6::Network
+Qt6::WebSockets
+Qt6::Multimedia
+)
\ No newline at end of file
diff --git a/addfrienddialog.h b/ChatClient/include/addfrienddialog.h
similarity index 100%
rename from addfrienddialog.h
rename to ChatClient/include/addfrienddialog.h
diff --git a/choosefrienddialog.h b/ChatClient/include/choosefrienddialog.h
similarity index 100%
rename from choosefrienddialog.h
rename to ChatClient/include/choosefrienddialog.h
diff --git a/debug.h b/ChatClient/include/debug.h
similarity index 82%
rename from debug.h
rename to ChatClient/include/debug.h
index 6bb6ba0..9734def 100644
--- a/debug.h
+++ b/ChatClient/include/debug.h
@@ -3,14 +3,12 @@
#define TEST_UI 0
-#define TEST_GROUP_SESSION_DETAIL 1
+#define TEST_GROUP_SESSION_DETAIL 0
#define TEST_SKIP_LOGIN 0
#define TEST_NETWORK 0
-#define TEST_GROUP_SESSION_DETAIL 0
-
#define DEPOLY 1
#endif // DEBUG_H
diff --git a/groupsessiondetailwidget.h b/ChatClient/include/groupsessiondetailwidget.h
similarity index 100%
rename from groupsessiondetailwidget.h
rename to ChatClient/include/groupsessiondetailwidget.h
diff --git a/historymessagewidget.h b/ChatClient/include/historymessagewidget.h
similarity index 100%
rename from historymessagewidget.h
rename to ChatClient/include/historymessagewidget.h
diff --git a/loginwidget.h b/ChatClient/include/loginwidget.h
similarity index 100%
rename from loginwidget.h
rename to ChatClient/include/loginwidget.h
diff --git a/mainwidget.h b/ChatClient/include/mainwidget.h
similarity index 100%
rename from mainwidget.h
rename to ChatClient/include/mainwidget.h
diff --git a/messageeditarea.h b/ChatClient/include/messageeditarea.h
similarity index 100%
rename from messageeditarea.h
rename to ChatClient/include/messageeditarea.h
diff --git a/messageshowarea.h b/ChatClient/include/messageshowarea.h
similarity index 100%
rename from messageshowarea.h
rename to ChatClient/include/messageshowarea.h
diff --git a/model/data.h b/ChatClient/include/model/data.h
similarity index 100%
rename from model/data.h
rename to ChatClient/include/model/data.h
diff --git a/model/datacenter.h b/ChatClient/include/model/datacenter.h
similarity index 100%
rename from model/datacenter.h
rename to ChatClient/include/model/datacenter.h
diff --git a/network/netclient.h b/ChatClient/include/network/netclient.h
similarity index 100%
rename from network/netclient.h
rename to ChatClient/include/network/netclient.h
diff --git a/phoneloginwidget.h b/ChatClient/include/phoneloginwidget.h
similarity index 100%
rename from phoneloginwidget.h
rename to ChatClient/include/phoneloginwidget.h
diff --git a/SelfInfoWidget.h b/ChatClient/include/selfinfowidget.h
similarity index 100%
rename from SelfInfoWidget.h
rename to ChatClient/include/selfinfowidget.h
diff --git a/sessiondetailwidget.h b/ChatClient/include/sessiondetailwidget.h
similarity index 100%
rename from sessiondetailwidget.h
rename to ChatClient/include/sessiondetailwidget.h
diff --git a/sessionfriendarea.h b/ChatClient/include/sessionfriendarea.h
similarity index 100%
rename from sessionfriendarea.h
rename to ChatClient/include/sessionfriendarea.h
diff --git a/soundrecorder.h b/ChatClient/include/soundrecorder.h
similarity index 100%
rename from soundrecorder.h
rename to ChatClient/include/soundrecorder.h
diff --git a/toast.h b/ChatClient/include/toast.h
similarity index 100%
rename from toast.h
rename to ChatClient/include/toast.h
diff --git a/userinfowidget.h b/ChatClient/include/userinfowidget.h
similarity index 100%
rename from userinfowidget.h
rename to ChatClient/include/userinfowidget.h
diff --git a/verifycodewidget.h b/ChatClient/include/verifycodewidget.h
similarity index 100%
rename from verifycodewidget.h
rename to ChatClient/include/verifycodewidget.h
diff --git a/proto/base.proto b/ChatClient/proto/base.proto
similarity index 100%
rename from proto/base.proto
rename to ChatClient/proto/base.proto
diff --git a/proto/file.proto b/ChatClient/proto/file.proto
similarity index 100%
rename from proto/file.proto
rename to ChatClient/proto/file.proto
diff --git a/proto/friend.proto b/ChatClient/proto/friend.proto
similarity index 100%
rename from proto/friend.proto
rename to ChatClient/proto/friend.proto
diff --git a/proto/gateway.proto b/ChatClient/proto/gateway.proto
similarity index 100%
rename from proto/gateway.proto
rename to ChatClient/proto/gateway.proto
diff --git a/proto/message_storage.proto b/ChatClient/proto/message_storage.proto
similarity index 100%
rename from proto/message_storage.proto
rename to ChatClient/proto/message_storage.proto
diff --git a/proto/message_transmit.proto b/ChatClient/proto/message_transmit.proto
similarity index 100%
rename from proto/message_transmit.proto
rename to ChatClient/proto/message_transmit.proto
diff --git a/proto/notify.proto b/ChatClient/proto/notify.proto
similarity index 100%
rename from proto/notify.proto
rename to ChatClient/proto/notify.proto
diff --git a/proto/speech_recognition.proto b/ChatClient/proto/speech_recognition.proto
similarity index 100%
rename from proto/speech_recognition.proto
rename to ChatClient/proto/speech_recognition.proto
diff --git a/proto/user.proto b/ChatClient/proto/user.proto
similarity index 100%
rename from proto/user.proto
rename to ChatClient/proto/user.proto
diff --git a/resource.qrc b/ChatClient/resource.qrc
similarity index 100%
rename from resource.qrc
rename to ChatClient/resource.qrc
index 0eacad7..b7c56fc 100644
--- a/resource.qrc
+++ b/ChatClient/resource.qrc
@@ -4,6 +4,7 @@
resource/image/apply_inactive.png
resource/image/checked.png
resource/image/cross.png
+ resource/image/defaultAv.png
resource/image/defaultAvatar.png
resource/image/file.png
resource/image/friend_active.png
@@ -21,6 +22,5 @@
resource/image/sound_active.png
resource/image/submit.png
resource/image/unchecked.png
- resource/image/defaultAv.png
diff --git a/resource/image/apply_active.png b/ChatClient/resource/image/apply_active.png
similarity index 100%
rename from resource/image/apply_active.png
rename to ChatClient/resource/image/apply_active.png
diff --git a/resource/image/apply_inactive.png b/ChatClient/resource/image/apply_inactive.png
similarity index 100%
rename from resource/image/apply_inactive.png
rename to ChatClient/resource/image/apply_inactive.png
diff --git a/resource/image/checked.png b/ChatClient/resource/image/checked.png
similarity index 100%
rename from resource/image/checked.png
rename to ChatClient/resource/image/checked.png
diff --git a/resource/image/cross.png b/ChatClient/resource/image/cross.png
similarity index 100%
rename from resource/image/cross.png
rename to ChatClient/resource/image/cross.png
diff --git a/resource/image/defaultAv.png b/ChatClient/resource/image/defaultAv.png
similarity index 100%
rename from resource/image/defaultAv.png
rename to ChatClient/resource/image/defaultAv.png
diff --git a/resource/image/defaultAvatar.png b/ChatClient/resource/image/defaultAvatar.png
similarity index 100%
rename from resource/image/defaultAvatar.png
rename to ChatClient/resource/image/defaultAvatar.png
diff --git a/resource/image/file.png b/ChatClient/resource/image/file.png
similarity index 100%
rename from resource/image/file.png
rename to ChatClient/resource/image/file.png
diff --git a/resource/image/friend_active.png b/ChatClient/resource/image/friend_active.png
similarity index 100%
rename from resource/image/friend_active.png
rename to ChatClient/resource/image/friend_active.png
diff --git a/resource/image/friend_inactive.png b/ChatClient/resource/image/friend_inactive.png
similarity index 100%
rename from resource/image/friend_inactive.png
rename to ChatClient/resource/image/friend_inactive.png
diff --git a/resource/image/groupAvatar.png b/ChatClient/resource/image/groupAvatar.png
similarity index 100%
rename from resource/image/groupAvatar.png
rename to ChatClient/resource/image/groupAvatar.png
diff --git a/resource/image/history.png b/ChatClient/resource/image/history.png
similarity index 100%
rename from resource/image/history.png
rename to ChatClient/resource/image/history.png
diff --git a/resource/image/image.png b/ChatClient/resource/image/image.png
similarity index 100%
rename from resource/image/image.png
rename to ChatClient/resource/image/image.png
diff --git a/resource/image/logo.png b/ChatClient/resource/image/logo.png
similarity index 100%
rename from resource/image/logo.png
rename to ChatClient/resource/image/logo.png
diff --git a/resource/image/modify.png b/ChatClient/resource/image/modify.png
similarity index 100%
rename from resource/image/modify.png
rename to ChatClient/resource/image/modify.png
diff --git a/resource/image/more.png b/ChatClient/resource/image/more.png
similarity index 100%
rename from resource/image/more.png
rename to ChatClient/resource/image/more.png
diff --git a/resource/image/search.png b/ChatClient/resource/image/search.png
similarity index 100%
rename from resource/image/search.png
rename to ChatClient/resource/image/search.png
diff --git a/resource/image/session_active.png b/ChatClient/resource/image/session_active.png
similarity index 100%
rename from resource/image/session_active.png
rename to ChatClient/resource/image/session_active.png
diff --git a/resource/image/session_inactive.png b/ChatClient/resource/image/session_inactive.png
similarity index 100%
rename from resource/image/session_inactive.png
rename to ChatClient/resource/image/session_inactive.png
diff --git a/resource/image/sound.png b/ChatClient/resource/image/sound.png
similarity index 100%
rename from resource/image/sound.png
rename to ChatClient/resource/image/sound.png
diff --git a/resource/image/sound_active.png b/ChatClient/resource/image/sound_active.png
similarity index 100%
rename from resource/image/sound_active.png
rename to ChatClient/resource/image/sound_active.png
diff --git a/resource/image/submit.png b/ChatClient/resource/image/submit.png
similarity index 100%
rename from resource/image/submit.png
rename to ChatClient/resource/image/submit.png
diff --git a/resource/image/unchecked.png b/ChatClient/resource/image/unchecked.png
similarity index 100%
rename from resource/image/unchecked.png
rename to ChatClient/resource/image/unchecked.png
diff --git a/addfrienddialog.cpp b/ChatClient/src/addfrienddialog.cpp
similarity index 100%
rename from addfrienddialog.cpp
rename to ChatClient/src/addfrienddialog.cpp
diff --git a/choosefrienddialog.cpp b/ChatClient/src/choosefrienddialog.cpp
similarity index 100%
rename from choosefrienddialog.cpp
rename to ChatClient/src/choosefrienddialog.cpp
diff --git a/groupsessiondetailwidget.cpp b/ChatClient/src/groupsessiondetailwidget.cpp
similarity index 100%
rename from groupsessiondetailwidget.cpp
rename to ChatClient/src/groupsessiondetailwidget.cpp
diff --git a/historymessagewidget.cpp b/ChatClient/src/historymessagewidget.cpp
similarity index 100%
rename from historymessagewidget.cpp
rename to ChatClient/src/historymessagewidget.cpp
diff --git a/loginwidget.cpp b/ChatClient/src/loginwidget.cpp
similarity index 100%
rename from loginwidget.cpp
rename to ChatClient/src/loginwidget.cpp
diff --git a/main.cpp b/ChatClient/src/main.cpp
similarity index 100%
rename from main.cpp
rename to ChatClient/src/main.cpp
diff --git a/mainwidget.cpp b/ChatClient/src/mainwidget.cpp
similarity index 100%
rename from mainwidget.cpp
rename to ChatClient/src/mainwidget.cpp
diff --git a/messageeditarea.cpp b/ChatClient/src/messageeditarea.cpp
similarity index 100%
rename from messageeditarea.cpp
rename to ChatClient/src/messageeditarea.cpp
diff --git a/messageshowarea.cpp b/ChatClient/src/messageshowarea.cpp
similarity index 100%
rename from messageshowarea.cpp
rename to ChatClient/src/messageshowarea.cpp
diff --git a/model/datacenter.cpp b/ChatClient/src/model/datacenter.cpp
similarity index 100%
rename from model/datacenter.cpp
rename to ChatClient/src/model/datacenter.cpp
diff --git a/network/netclient.cpp b/ChatClient/src/network/netclient.cpp
similarity index 100%
rename from network/netclient.cpp
rename to ChatClient/src/network/netclient.cpp
diff --git a/phoneloginwidget.cpp b/ChatClient/src/phoneloginwidget.cpp
similarity index 100%
rename from phoneloginwidget.cpp
rename to ChatClient/src/phoneloginwidget.cpp
diff --git a/SelfInfoWidget.cpp b/ChatClient/src/selfinfowidget.cpp
similarity index 100%
rename from SelfInfoWidget.cpp
rename to ChatClient/src/selfinfowidget.cpp
diff --git a/sessiondetailwidget.cpp b/ChatClient/src/sessiondetailwidget.cpp
similarity index 100%
rename from sessiondetailwidget.cpp
rename to ChatClient/src/sessiondetailwidget.cpp
diff --git a/sessionfriendarea.cpp b/ChatClient/src/sessionfriendarea.cpp
similarity index 100%
rename from sessionfriendarea.cpp
rename to ChatClient/src/sessionfriendarea.cpp
diff --git a/soundrecorder.cpp b/ChatClient/src/soundrecorder.cpp
similarity index 100%
rename from soundrecorder.cpp
rename to ChatClient/src/soundrecorder.cpp
diff --git a/toast.cpp b/ChatClient/src/toast.cpp
similarity index 100%
rename from toast.cpp
rename to ChatClient/src/toast.cpp
diff --git a/userinfowidget.cpp b/ChatClient/src/userinfowidget.cpp
similarity index 100%
rename from userinfowidget.cpp
rename to ChatClient/src/userinfowidget.cpp
diff --git a/verifycodewidget.cpp b/ChatClient/src/verifycodewidget.cpp
similarity index 100%
rename from verifycodewidget.cpp
rename to ChatClient/src/verifycodewidget.cpp
diff --git a/mainwidget.ui b/ChatClient/ui/mainwidget.ui
similarity index 100%
rename from mainwidget.ui
rename to ChatClient/ui/mainwidget.ui
diff --git a/docs/C++ 聊天室 - 客户端代码开发.pdf b/docs/C++ 聊天室 - 客户端代码开发.pdf
new file mode 100644
index 0000000..d7d905b
Binary files /dev/null and b/docs/C++ 聊天室 - 客户端代码开发.pdf differ