diff --git a/.DS_Store b/.DS_Store
new file mode 100644
index 0000000..4c8aba4
Binary files /dev/null and b/.DS_Store differ
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..e69de29
diff --git a/Client/CMakeLists.txt b/Client/CMakeLists.txt
new file mode 100644
index 0000000..f9aab60
--- /dev/null
+++ b/Client/CMakeLists.txt
@@ -0,0 +1,63 @@
+cmake_minimum_required(VERSION 3.5)
+
+project(ChatWare 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(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets)
+find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets)
+
+set(PROJECT_SOURCES
+ main.cpp
+ mainwindow.cpp
+ mainwindow.h
+ mainwindow.ui
+ encryption.h
+ encryption.cpp
+)
+
+if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)
+ qt_add_executable(ChatWare
+ MANUAL_FINALIZATION
+ ${PROJECT_SOURCES}
+ )
+# Define target properties for Android with Qt 6 as:
+# set_property(TARGET ChatWare APPEND PROPERTY QT_ANDROID_PACKAGE_SOURCE_DIR
+# ${CMAKE_CURRENT_SOURCE_DIR}/android)
+# For more information, see https://doc.qt.io/qt-6/qt-add-executable.html#target-creation
+else()
+ if(ANDROID)
+ add_library(ChatWare SHARED
+ ${PROJECT_SOURCES}
+ )
+# Define properties for Android with Qt 5 after find_package() calls as:
+# set(ANDROID_PACKAGE_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/android")
+ else()
+ add_executable(ChatWare
+ ${PROJECT_SOURCES}
+ )
+ endif()
+endif()
+
+target_link_libraries(ChatWare PRIVATE Qt${QT_VERSION_MAJOR}::Widgets)
+
+set_target_properties(ChatWare PROPERTIES
+ MACOSX_BUNDLE_GUI_IDENTIFIER my.example.com
+ MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}
+ MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}
+ MACOSX_BUNDLE TRUE
+ WIN32_EXECUTABLE TRUE
+)
+
+install(TARGETS ChatWare
+ BUNDLE DESTINATION .
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
+
+if(QT_VERSION_MAJOR EQUAL 6)
+ qt_finalize_executable(ChatWare)
+endif()
diff --git a/Client/CMakeLists.txt.user b/Client/CMakeLists.txt.user
new file mode 100644
index 0000000..70177ed
--- /dev/null
+++ b/Client/CMakeLists.txt.user
@@ -0,0 +1,1369 @@
+
+
+
+
+
+ EnvironmentId
+ {5de9d785-ce81-488d-ae7f-5e50080fe87e}
+
+
+ ProjectExplorer.Project.ActiveTarget
+ 0
+
+
+ ProjectExplorer.Project.EditorSettings
+
+ true
+ false
+ true
+
+ Cpp
+
+ CppGlobal
+
+
+
+ QmlJS
+
+ QmlJSGlobal
+
+
+ 2
+ UTF-8
+ false
+ 4
+ false
+ 80
+ true
+ true
+ 1
+ false
+ true
+ false
+ 0
+ true
+ true
+ 0
+ 8
+ true
+ false
+ 1
+ true
+ true
+ true
+ *.md, *.MD, Makefile
+ false
+ true
+ true
+
+
+
+ ProjectExplorer.Project.PluginSettings
+
+
+ true
+ false
+ true
+ true
+ true
+ true
+
+
+ 0
+ true
+
+ true
+ true
+ Builtin.DefaultTidyAndClazy
+ 4
+
+
+
+ true
+
+
+
+
+ ProjectExplorer.Project.Target.0
+
+ Ios.Device.Type
+ Qt 6.4.2 for iOS
+ Qt 6.4.2 for iOS
+ {722e0762-6e5e-43c0-851a-406ef3011c78}
+ 0
+ 0
+ 0
+
+ -DCMAKE_XCODE_ATTRIBUTE_DEVELOPMENT_TEAM:STRING=YBCEJGBE4S
+ Debug
+ false
+
+ -DCMAKE_GENERATOR:STRING=Xcode
+-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable}
+-DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX}
+-DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C}
+-DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx}
+-DCMAKE_TOOLCHAIN_FILE:FILEPATH=%{Qt:QT_INSTALL_PREFIX}/lib/cmake/Qt6/qt.toolchain.cmake
+-DCMAKE_OSX_ARCHITECTURES:STRING=arm64
+-DCMAKE_OSX_SYSROOT:STRING=iphoneos
+-DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG}
+%{Ios:DevelopmentTeam:Flag}
+%{Ios:ProvisioningProfile:Flag}
+ 0
+ /Users/chenhangjian/Desktop/ChatWareQT/../build-ChatWareQT-Qt_6_4_2_for_iOS
+
+
+
+
+ ALL_BUILD
+
+ false
+
+ true
+ Build
+ CMakeProjectManager.MakeStep
+
+ 1
+ Build
+ Build
+ ProjectExplorer.BuildSteps.Build
+
+
+
+
+
+ clean
+
+ false
+
+ true
+ Build
+ CMakeProjectManager.MakeStep
+
+ 1
+ Clean
+ Clean
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ false
+
+ Debug
+ CMakeProjectManager.CMakeBuildConfiguration
+
+
+ -DCMAKE_XCODE_ATTRIBUTE_DEVELOPMENT_TEAM:STRING=YBCEJGBE4S
+ Release
+ false
+
+ -DCMAKE_GENERATOR:STRING=Xcode
+-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable}
+-DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX}
+-DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C}
+-DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx}
+-DCMAKE_TOOLCHAIN_FILE:FILEPATH=%{Qt:QT_INSTALL_PREFIX}/lib/cmake/Qt6/qt.toolchain.cmake
+-DCMAKE_OSX_ARCHITECTURES:STRING=arm64
+-DCMAKE_OSX_SYSROOT:STRING=iphoneos
+-DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG}
+%{Ios:DevelopmentTeam:Flag}
+%{Ios:ProvisioningProfile:Flag}
+ /Users/chenhangjian/Desktop/ChatWareQT/../build-ChatWareQT-Qt_6_4_2_for_iOS
+
+
+
+
+ all
+
+ false
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Build
+ Build
+ ProjectExplorer.BuildSteps.Build
+
+
+
+
+
+ clean
+
+ false
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Clean
+ Clean
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ false
+
+ Release
+ CMakeProjectManager.CMakeBuildConfiguration
+
+
+ -DCMAKE_XCODE_ATTRIBUTE_DEVELOPMENT_TEAM:STRING=YBCEJGBE4S
+ RelWithDebInfo
+ false
+
+ -DCMAKE_GENERATOR:STRING=Xcode
+-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable}
+-DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX}
+-DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C}
+-DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx}
+-DCMAKE_TOOLCHAIN_FILE:FILEPATH=%{Qt:QT_INSTALL_PREFIX}/lib/cmake/Qt6/qt.toolchain.cmake
+-DCMAKE_OSX_ARCHITECTURES:STRING=arm64
+-DCMAKE_OSX_SYSROOT:STRING=iphoneos
+-DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG}
+%{Ios:DevelopmentTeam:Flag}
+%{Ios:ProvisioningProfile:Flag}
+ /Users/chenhangjian/Desktop/ChatWareQT/../build-ChatWareQT-Qt_6_4_2_for_iOS
+
+
+
+
+ all
+
+ false
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Build
+ Build
+ ProjectExplorer.BuildSteps.Build
+
+
+
+
+
+ clean
+
+ false
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Clean
+ Clean
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ false
+
+ Release with Debug Information
+ CMakeProjectManager.CMakeBuildConfiguration
+
+
+ -DCMAKE_XCODE_ATTRIBUTE_DEVELOPMENT_TEAM:STRING=YBCEJGBE4S
+ RelWithDebInfo
+ false
+
+ -DCMAKE_GENERATOR:STRING=Xcode
+-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable}
+-DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX}
+-DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C}
+-DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx}
+-DCMAKE_TOOLCHAIN_FILE:FILEPATH=%{Qt:QT_INSTALL_PREFIX}/lib/cmake/Qt6/qt.toolchain.cmake
+-DCMAKE_OSX_ARCHITECTURES:STRING=arm64
+-DCMAKE_OSX_SYSROOT:STRING=iphoneos
+-DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG}
+%{Ios:DevelopmentTeam:Flag}
+%{Ios:ProvisioningProfile:Flag}
+ 0
+ /Users/chenhangjian/Desktop/ChatWareQT/../build-ChatWareQT-Qt_6_4_2_for_iOS
+
+
+
+
+ all
+
+ false
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Build
+ Build
+ ProjectExplorer.BuildSteps.Build
+
+
+
+
+
+ clean
+
+ false
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Clean
+ Clean
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ false
+
+ Profile
+ CMakeProjectManager.CMakeBuildConfiguration
+
+
+ -DCMAKE_XCODE_ATTRIBUTE_DEVELOPMENT_TEAM:STRING=YBCEJGBE4S
+ MinSizeRel
+ false
+
+ -DCMAKE_GENERATOR:STRING=Xcode
+-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable}
+-DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX}
+-DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C}
+-DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx}
+-DCMAKE_TOOLCHAIN_FILE:FILEPATH=%{Qt:QT_INSTALL_PREFIX}/lib/cmake/Qt6/qt.toolchain.cmake
+-DCMAKE_OSX_ARCHITECTURES:STRING=arm64
+-DCMAKE_OSX_SYSROOT:STRING=iphoneos
+-DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG}
+%{Ios:DevelopmentTeam:Flag}
+%{Ios:ProvisioningProfile:Flag}
+ /Users/chenhangjian/Desktop/ChatWareQT/../build-ChatWareQT-Qt_6_4_2_for_iOS
+
+
+
+
+ all
+
+ false
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Build
+ Build
+ ProjectExplorer.BuildSteps.Build
+
+
+
+
+
+ clean
+
+ false
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Clean
+ Clean
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ false
+
+ Minimum Size Release
+ CMakeProjectManager.CMakeBuildConfiguration
+
+ 5
+
+
+
+ true
+ Deploy to Jafari’s iPad
+ Qt4ProjectManager.IosDeployStep
+
+ 1
+ Deploy
+ Deploy
+ ProjectExplorer.BuildSteps.Deploy
+
+ 1
+
+ false
+ Qt4ProjectManager.IosDeployConfiguration
+
+ 1
+
+ true
+ true
+ true
+
+
+
+
+ 0
+
+ Run ChatWareQT on Jafari’s iPad
+ Qt4ProjectManager.IosRunConfiguration:ChatWareQT
+ ChatWareQT
+ false
+ true
+ false
+ true
+
+ 1
+
+
+
+ ProjectExplorer.Project.Target.1
+
+ Ios.Simulator.Type
+ Qt 6.4.2 for iOS Simulator
+ Qt 6.4.2 for iOS Simulator
+ {bf011fb2-a666-49c3-bd65-c6ab67667fbf}
+ 0
+ 0
+ 0
+
+ Debug
+ false
+
+ -DCMAKE_GENERATOR:STRING=Xcode
+-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable}
+-DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX}
+-DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C}
+-DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx}
+-DCMAKE_TOOLCHAIN_FILE:FILEPATH=%{Qt:QT_INSTALL_PREFIX}/lib/cmake/Qt6/qt.toolchain.cmake
+-DCMAKE_OSX_ARCHITECTURES:STRING=x86_64
+-DCMAKE_OSX_SYSROOT:STRING=iphonesimulator
+-DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG}
+%{Ios:DevelopmentTeam:Flag}
+%{Ios:ProvisioningProfile:Flag}
+ 0
+ /Users/chenhangjian/Desktop/ChatWareQT/../build-ChatWareQT-Qt_6_4_2_for_iOS_Simulator
+
+
+
+
+ all
+
+ false
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Build
+ Build
+ ProjectExplorer.BuildSteps.Build
+
+
+
+
+
+ clean
+
+ false
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Clean
+ Clean
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ false
+
+ Debug
+ CMakeProjectManager.CMakeBuildConfiguration
+
+
+ Release
+ false
+
+ -DCMAKE_GENERATOR:STRING=Xcode
+-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable}
+-DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX}
+-DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C}
+-DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx}
+-DCMAKE_TOOLCHAIN_FILE:FILEPATH=%{Qt:QT_INSTALL_PREFIX}/lib/cmake/Qt6/qt.toolchain.cmake
+-DCMAKE_OSX_ARCHITECTURES:STRING=x86_64
+-DCMAKE_OSX_SYSROOT:STRING=iphonesimulator
+-DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG}
+%{Ios:DevelopmentTeam:Flag}
+%{Ios:ProvisioningProfile:Flag}
+ /Users/chenhangjian/Desktop/ChatWareQT/../build-ChatWareQT-Qt_6_4_2_for_iOS_Simulator
+
+
+
+
+ all
+
+ false
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Build
+ Build
+ ProjectExplorer.BuildSteps.Build
+
+
+
+
+
+ clean
+
+ false
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Clean
+ Clean
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ false
+
+ Release
+ CMakeProjectManager.CMakeBuildConfiguration
+
+
+ RelWithDebInfo
+ false
+
+ -DCMAKE_GENERATOR:STRING=Xcode
+-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable}
+-DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX}
+-DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C}
+-DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx}
+-DCMAKE_TOOLCHAIN_FILE:FILEPATH=%{Qt:QT_INSTALL_PREFIX}/lib/cmake/Qt6/qt.toolchain.cmake
+-DCMAKE_OSX_ARCHITECTURES:STRING=x86_64
+-DCMAKE_OSX_SYSROOT:STRING=iphonesimulator
+-DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG}
+%{Ios:DevelopmentTeam:Flag}
+%{Ios:ProvisioningProfile:Flag}
+ /Users/chenhangjian/Desktop/ChatWareQT/../build-ChatWareQT-Qt_6_4_2_for_iOS_Simulator
+
+
+
+
+ all
+
+ false
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Build
+ Build
+ ProjectExplorer.BuildSteps.Build
+
+
+
+
+
+ clean
+
+ false
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Clean
+ Clean
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ false
+
+ Release with Debug Information
+ CMakeProjectManager.CMakeBuildConfiguration
+
+
+ RelWithDebInfo
+ false
+
+ -DCMAKE_GENERATOR:STRING=Xcode
+-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable}
+-DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX}
+-DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C}
+-DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx}
+-DCMAKE_TOOLCHAIN_FILE:FILEPATH=%{Qt:QT_INSTALL_PREFIX}/lib/cmake/Qt6/qt.toolchain.cmake
+-DCMAKE_OSX_ARCHITECTURES:STRING=x86_64
+-DCMAKE_OSX_SYSROOT:STRING=iphonesimulator
+-DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG}
+%{Ios:DevelopmentTeam:Flag}
+%{Ios:ProvisioningProfile:Flag}
+ 0
+ /Users/chenhangjian/Desktop/ChatWareQT/../build-ChatWareQT-Qt_6_4_2_for_iOS_Simulator
+
+
+
+
+ all
+
+ false
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Build
+ Build
+ ProjectExplorer.BuildSteps.Build
+
+
+
+
+
+ clean
+
+ false
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Clean
+ Clean
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ false
+
+ Profile
+ CMakeProjectManager.CMakeBuildConfiguration
+
+
+ MinSizeRel
+ false
+
+ -DCMAKE_GENERATOR:STRING=Xcode
+-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable}
+-DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX}
+-DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C}
+-DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx}
+-DCMAKE_TOOLCHAIN_FILE:FILEPATH=%{Qt:QT_INSTALL_PREFIX}/lib/cmake/Qt6/qt.toolchain.cmake
+-DCMAKE_OSX_ARCHITECTURES:STRING=x86_64
+-DCMAKE_OSX_SYSROOT:STRING=iphonesimulator
+-DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG}
+%{Ios:DevelopmentTeam:Flag}
+%{Ios:ProvisioningProfile:Flag}
+ /Users/chenhangjian/Desktop/ChatWareQT/../build-ChatWareQT-Qt_6_4_2_for_iOS_Simulator
+
+
+
+
+ all
+
+ false
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Build
+ Build
+ ProjectExplorer.BuildSteps.Build
+
+
+
+
+
+ clean
+
+ false
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Clean
+ Clean
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ false
+
+ Minimum Size Release
+ CMakeProjectManager.CMakeBuildConfiguration
+
+ 5
+
+
+
+ true
+ Deploy to iOS Simulator
+ Qt4ProjectManager.IosDeployStep
+
+ 1
+ Deploy
+ Deploy
+ ProjectExplorer.BuildSteps.Deploy
+
+ 1
+
+ false
+ Qt4ProjectManager.IosDeployConfiguration
+
+ 1
+
+ true
+ true
+ true
+
+ 2
+
+ ProjectExplorer.CustomExecutableRunConfiguration
+
+ false
+ true
+ false
+ true
+
+ 1
+
+
+
+ ProjectExplorer.Project.Target.2
+
+ Desktop
+ Qt 6.4.2 for macOS
+ Qt 6.4.2 for macOS
+ qt.qt6.642.clang_64_kit
+ 0
+ 0
+ 0
+
+ Debug
+ false
+
+ -DCMAKE_GENERATOR:STRING=Ninja
+-DCMAKE_BUILD_TYPE:STRING=Debug
+-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable}
+-DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX}
+-DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C}
+-DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx}
+-DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG}
+%{CMAKE_OSX_ARCHITECTURES:DefaultFlag}
+ 0
+ /Users/chenhangjian/Desktop/ChatWareQT/../build-ChatWareQT-Qt_6_4_2_for_macOS-Debug
+
+
+
+
+ all
+
+ false
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Build
+ Build
+ ProjectExplorer.BuildSteps.Build
+
+
+
+
+
+ clean
+
+ false
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Clean
+ Clean
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ false
+
+ Debug
+ CMakeProjectManager.CMakeBuildConfiguration
+
+
+ Release
+ false
+
+ -DCMAKE_GENERATOR:STRING=Ninja
+-DCMAKE_BUILD_TYPE:STRING=Release
+-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable}
+-DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX}
+-DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C}
+-DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx}
+-DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG}
+%{CMAKE_OSX_ARCHITECTURES:DefaultFlag}
+ /Users/chenhangjian/Desktop/ChatWareQT/../build-ChatWareQT-Qt_6_4_2_for_macOS-Release
+
+
+
+
+ all
+
+ false
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Build
+ Build
+ ProjectExplorer.BuildSteps.Build
+
+
+
+
+
+ clean
+
+ false
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Clean
+ Clean
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ false
+
+ Release
+ CMakeProjectManager.CMakeBuildConfiguration
+
+
+ RelWithDebInfo
+ false
+
+ -DCMAKE_GENERATOR:STRING=Ninja
+-DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo
+-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable}
+-DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX}
+-DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C}
+-DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx}
+-DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG}
+%{CMAKE_OSX_ARCHITECTURES:DefaultFlag}
+ /Users/chenhangjian/Desktop/ChatWareQT/../build-ChatWareQT-Qt_6_4_2_for_macOS-RelWithDebInfo
+
+
+
+
+ all
+
+ false
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Build
+ Build
+ ProjectExplorer.BuildSteps.Build
+
+
+
+
+
+ clean
+
+ false
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Clean
+ Clean
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ false
+
+ Release with Debug Information
+ CMakeProjectManager.CMakeBuildConfiguration
+
+
+ RelWithDebInfo
+ false
+
+ -DCMAKE_GENERATOR:STRING=Ninja
+-DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo
+-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable}
+-DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX}
+-DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C}
+-DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx}
+-DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG}
+%{CMAKE_OSX_ARCHITECTURES:DefaultFlag}
+ 0
+ /Users/chenhangjian/Desktop/ChatWareQT/../build-ChatWareQT-Qt_6_4_2_for_macOS-Profile
+
+
+
+
+ all
+
+ false
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Build
+ Build
+ ProjectExplorer.BuildSteps.Build
+
+
+
+
+
+ clean
+
+ false
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Clean
+ Clean
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ false
+
+ Profile
+ CMakeProjectManager.CMakeBuildConfiguration
+
+
+ MinSizeRel
+ false
+
+ -DCMAKE_GENERATOR:STRING=Ninja
+-DCMAKE_BUILD_TYPE:STRING=MinSizeRel
+-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable}
+-DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX}
+-DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C}
+-DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx}
+-DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG}
+%{CMAKE_OSX_ARCHITECTURES:DefaultFlag}
+ /Users/chenhangjian/Desktop/ChatWareQT/../build-ChatWareQT-Qt_6_4_2_for_macOS-MinSizeRel
+
+
+
+
+ all
+
+ false
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Build
+ Build
+ ProjectExplorer.BuildSteps.Build
+
+
+
+
+
+ clean
+
+ false
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Clean
+ Clean
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ false
+
+ Minimum Size Release
+ CMakeProjectManager.CMakeBuildConfiguration
+
+ 5
+
+
+ 0
+ Deploy
+ Deploy
+ ProjectExplorer.BuildSteps.Deploy
+
+ 1
+
+ false
+ ProjectExplorer.DefaultDeployConfiguration
+
+ 1
+
+ true
+ true
+ true
+
+ 2
+
+ ProjectExplorer.CustomExecutableRunConfiguration
+
+ false
+ true
+ false
+ true
+
+ 1
+
+
+
+ ProjectExplorer.Project.Target.3
+
+ WebAssemblyDeviceType
+ WebAssembly Qt 6.4.2
+ WebAssembly Qt 6.4.2
+ qt.qt6.642.wasm_32_kit
+ 0
+ -1
+ 0
+
+ Debug
+ false
+
+ -DCMAKE_GENERATOR:STRING=Ninja
+-DCMAKE_BUILD_TYPE:STRING=Debug
+-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable}
+-DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX}
+-DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C}
+-DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx}
+-DCMAKE_TOOLCHAIN_FILE:FILEPATH=%{Qt:QT_INSTALL_PREFIX}/lib/cmake/Qt6/qt.toolchain.cmake
+-DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG}
+ 0
+ /Users/chenhangjian/Desktop/ChatWareQT/../build-ChatWareQT-WebAssembly_Qt_6_4_2-Debug
+
+
+
+
+ all
+
+ false
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Build
+ Build
+ ProjectExplorer.BuildSteps.Build
+
+
+
+
+
+ clean
+
+ false
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Clean
+ Clean
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ false
+
+ Debug
+ CMakeProjectManager.CMakeBuildConfiguration
+
+
+ Release
+ false
+
+ -DCMAKE_GENERATOR:STRING=Ninja
+-DCMAKE_BUILD_TYPE:STRING=Release
+-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable}
+-DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX}
+-DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C}
+-DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx}
+-DCMAKE_TOOLCHAIN_FILE:FILEPATH=%{Qt:QT_INSTALL_PREFIX}/lib/cmake/Qt6/qt.toolchain.cmake
+-DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG}
+ /Users/chenhangjian/Desktop/ChatWareQT/../build-ChatWareQT-WebAssembly_Qt_6_4_2-Release
+
+
+
+
+ all
+
+ false
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Build
+ Build
+ ProjectExplorer.BuildSteps.Build
+
+
+
+
+
+ clean
+
+ false
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Clean
+ Clean
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ false
+
+ Release
+ CMakeProjectManager.CMakeBuildConfiguration
+
+
+ RelWithDebInfo
+ false
+
+ -DCMAKE_GENERATOR:STRING=Ninja
+-DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo
+-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable}
+-DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX}
+-DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C}
+-DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx}
+-DCMAKE_TOOLCHAIN_FILE:FILEPATH=%{Qt:QT_INSTALL_PREFIX}/lib/cmake/Qt6/qt.toolchain.cmake
+-DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG}
+ /Users/chenhangjian/Desktop/ChatWareQT/../build-ChatWareQT-WebAssembly_Qt_6_4_2-RelWithDebInfo
+
+
+
+
+ all
+
+ false
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Build
+ Build
+ ProjectExplorer.BuildSteps.Build
+
+
+
+
+
+ clean
+
+ false
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Clean
+ Clean
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ false
+
+ Release with Debug Information
+ CMakeProjectManager.CMakeBuildConfiguration
+
+
+ RelWithDebInfo
+ false
+
+ -DCMAKE_GENERATOR:STRING=Ninja
+-DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo
+-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable}
+-DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX}
+-DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C}
+-DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx}
+-DCMAKE_TOOLCHAIN_FILE:FILEPATH=%{Qt:QT_INSTALL_PREFIX}/lib/cmake/Qt6/qt.toolchain.cmake
+-DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG}
+ 0
+ /Users/chenhangjian/Desktop/ChatWareQT/../build-ChatWareQT-WebAssembly_Qt_6_4_2-Profile
+
+
+
+
+ all
+
+ false
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Build
+ Build
+ ProjectExplorer.BuildSteps.Build
+
+
+
+
+
+ clean
+
+ false
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Clean
+ Clean
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ false
+
+ Profile
+ CMakeProjectManager.CMakeBuildConfiguration
+
+
+ MinSizeRel
+ false
+
+ -DCMAKE_GENERATOR:STRING=Ninja
+-DCMAKE_BUILD_TYPE:STRING=MinSizeRel
+-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable}
+-DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX}
+-DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C}
+-DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx}
+-DCMAKE_TOOLCHAIN_FILE:FILEPATH=%{Qt:QT_INSTALL_PREFIX}/lib/cmake/Qt6/qt.toolchain.cmake
+-DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG}
+ /Users/chenhangjian/Desktop/ChatWareQT/../build-ChatWareQT-WebAssembly_Qt_6_4_2-MinSizeRel
+
+
+
+
+ all
+
+ false
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Build
+ Build
+ ProjectExplorer.BuildSteps.Build
+
+
+
+
+
+ clean
+
+ false
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Clean
+ Clean
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ false
+
+ Minimum Size Release
+ CMakeProjectManager.CMakeBuildConfiguration
+
+ 5
+ 0
+
+ true
+ true
+ true
+
+ 2
+
+ ProjectExplorer.CustomExecutableRunConfiguration
+
+ false
+ true
+ false
+ true
+
+ 1
+
+
+
+ ProjectExplorer.Project.TargetCount
+ 4
+
+
+ ProjectExplorer.Project.Updater.FileVersion
+ 22
+
+
+ Version
+ 22
+
+
diff --git a/Client/encryption.cpp b/Client/encryption.cpp
new file mode 100644
index 0000000..a3a67c1
--- /dev/null
+++ b/Client/encryption.cpp
@@ -0,0 +1,6 @@
+#include "encryption.h"
+
+ECC::ECC()
+{
+
+}
diff --git a/Client/encryption.h b/Client/encryption.h
new file mode 100644
index 0000000..3680a0c
--- /dev/null
+++ b/Client/encryption.h
@@ -0,0 +1,11 @@
+#ifndef ECC_H
+#define ECC_H
+
+
+class ECC
+{
+public:
+ ECC();
+};
+
+#endif // ECC_H
diff --git a/Client/main.cpp b/Client/main.cpp
new file mode 100644
index 0000000..fd3e533
--- /dev/null
+++ b/Client/main.cpp
@@ -0,0 +1,11 @@
+#include "mainwindow.h"
+
+#include
+
+int main(int argc, char *argv[])
+{
+ QApplication a(argc, argv);
+ MainWindow w;
+ w.show();
+ return a.exec();
+}
diff --git a/Client/mainwindow.cpp b/Client/mainwindow.cpp
new file mode 100644
index 0000000..a06fc8e
--- /dev/null
+++ b/Client/mainwindow.cpp
@@ -0,0 +1,15 @@
+#include "mainwindow.h"
+#include "./ui_mainwindow.h"
+
+MainWindow::MainWindow(QWidget *parent)
+ : QMainWindow(parent)
+ , ui(new Ui::MainWindow)
+{
+ ui->setupUi(this);
+}
+
+MainWindow::~MainWindow()
+{
+ delete ui;
+}
+
diff --git a/Client/mainwindow.h b/Client/mainwindow.h
new file mode 100644
index 0000000..4643e32
--- /dev/null
+++ b/Client/mainwindow.h
@@ -0,0 +1,21 @@
+#ifndef MAINWINDOW_H
+#define MAINWINDOW_H
+
+#include
+
+QT_BEGIN_NAMESPACE
+namespace Ui { class MainWindow; }
+QT_END_NAMESPACE
+
+class MainWindow : public QMainWindow
+{
+ Q_OBJECT
+
+public:
+ MainWindow(QWidget *parent = nullptr);
+ ~MainWindow();
+
+private:
+ Ui::MainWindow *ui;
+};
+#endif // MAINWINDOW_H
diff --git a/Client/mainwindow.ui b/Client/mainwindow.ui
new file mode 100644
index 0000000..b232854
--- /dev/null
+++ b/Client/mainwindow.ui
@@ -0,0 +1,22 @@
+
+
+ MainWindow
+
+
+
+ 0
+ 0
+ 800
+ 600
+
+
+
+ MainWindow
+
+
+
+
+
+
+
+
diff --git a/Client_test_Console/Client_test_vs/.vs/Client_test/FileContentIndex/b25d49c2-798d-4eac-91f9-1ae36a84252f.vsidx b/Client_test_Console/Client_test_vs/.vs/Client_test/FileContentIndex/b25d49c2-798d-4eac-91f9-1ae36a84252f.vsidx
new file mode 100644
index 0000000..d095085
Binary files /dev/null and b/Client_test_Console/Client_test_vs/.vs/Client_test/FileContentIndex/b25d49c2-798d-4eac-91f9-1ae36a84252f.vsidx differ
diff --git a/Client_test_Console/Client_test_vs/.vs/Client_test/FileContentIndex/d84fb4f6-6909-43fa-b0f2-6342b1d65446.vsidx b/Client_test_Console/Client_test_vs/.vs/Client_test/FileContentIndex/d84fb4f6-6909-43fa-b0f2-6342b1d65446.vsidx
new file mode 100644
index 0000000..b1942a9
Binary files /dev/null and b/Client_test_Console/Client_test_vs/.vs/Client_test/FileContentIndex/d84fb4f6-6909-43fa-b0f2-6342b1d65446.vsidx differ
diff --git a/Client_test_Console/Client_test_vs/.vs/Client_test/FileContentIndex/de6ba690-8044-4e15-b41d-9699783826da.vsidx b/Client_test_Console/Client_test_vs/.vs/Client_test/FileContentIndex/de6ba690-8044-4e15-b41d-9699783826da.vsidx
new file mode 100644
index 0000000..cffb985
Binary files /dev/null and b/Client_test_Console/Client_test_vs/.vs/Client_test/FileContentIndex/de6ba690-8044-4e15-b41d-9699783826da.vsidx differ
diff --git a/Client_test_Console/Client_test_vs/.vs/Client_test/FileContentIndex/read.lock b/Client_test_Console/Client_test_vs/.vs/Client_test/FileContentIndex/read.lock
new file mode 100644
index 0000000..e69de29
diff --git a/Client_test_Console/Client_test_vs/.vs/Client_test/v17/.suo b/Client_test_Console/Client_test_vs/.vs/Client_test/v17/.suo
new file mode 100644
index 0000000..8a930e8
Binary files /dev/null and b/Client_test_Console/Client_test_vs/.vs/Client_test/v17/.suo differ
diff --git a/Client_test_Console/Client_test_vs/.vs/Client_test/v17/Browse.VC.db b/Client_test_Console/Client_test_vs/.vs/Client_test/v17/Browse.VC.db
new file mode 100644
index 0000000..3123803
Binary files /dev/null and b/Client_test_Console/Client_test_vs/.vs/Client_test/v17/Browse.VC.db differ
diff --git a/Client_test_Console/Client_test_vs/.vs/Client_test/v17/ipch/AutoPCH/b1ad3560e16e3e6a/MAIN.ipch b/Client_test_Console/Client_test_vs/.vs/Client_test/v17/ipch/AutoPCH/b1ad3560e16e3e6a/MAIN.ipch
new file mode 100644
index 0000000..02fc1d6
Binary files /dev/null and b/Client_test_Console/Client_test_vs/.vs/Client_test/v17/ipch/AutoPCH/b1ad3560e16e3e6a/MAIN.ipch differ
diff --git a/Client_test_Console/Client_test_vs/.vs/Client_test/v17/ipch/AutoPCH/bff0244b5e635555/CLIENT_TEST.ipch b/Client_test_Console/Client_test_vs/.vs/Client_test/v17/ipch/AutoPCH/bff0244b5e635555/CLIENT_TEST.ipch
new file mode 100644
index 0000000..64824a3
Binary files /dev/null and b/Client_test_Console/Client_test_vs/.vs/Client_test/v17/ipch/AutoPCH/bff0244b5e635555/CLIENT_TEST.ipch differ
diff --git a/Client_test_Console/Client_test_vs/.vs/Client_test/v17/ipch/AutoPCH/cc88bc757ff8b5c3/CLIENT_TEST.ipch b/Client_test_Console/Client_test_vs/.vs/Client_test/v17/ipch/AutoPCH/cc88bc757ff8b5c3/CLIENT_TEST.ipch
new file mode 100644
index 0000000..28b51e7
Binary files /dev/null and b/Client_test_Console/Client_test_vs/.vs/Client_test/v17/ipch/AutoPCH/cc88bc757ff8b5c3/CLIENT_TEST.ipch differ
diff --git a/Client_test_Console/Client_test_vs/.vs/Client_test/v17/ipch/AutoPCH/f4859565c1210ea1/CHATWARESOCKET.ipch b/Client_test_Console/Client_test_vs/.vs/Client_test/v17/ipch/AutoPCH/f4859565c1210ea1/CHATWARESOCKET.ipch
new file mode 100644
index 0000000..fcfbfa1
Binary files /dev/null and b/Client_test_Console/Client_test_vs/.vs/Client_test/v17/ipch/AutoPCH/f4859565c1210ea1/CHATWARESOCKET.ipch differ
diff --git a/Client_test_Console/Client_test_vs/.vs/Client_test_vs/FileContentIndex/0283f20b-582c-410b-b45c-1bf23bd44662.vsidx b/Client_test_Console/Client_test_vs/.vs/Client_test_vs/FileContentIndex/0283f20b-582c-410b-b45c-1bf23bd44662.vsidx
new file mode 100644
index 0000000..228d165
Binary files /dev/null and b/Client_test_Console/Client_test_vs/.vs/Client_test_vs/FileContentIndex/0283f20b-582c-410b-b45c-1bf23bd44662.vsidx differ
diff --git a/Client_test_Console/Client_test_vs/.vs/Client_test_vs/FileContentIndex/f85dc867-721e-4d26-94be-1af343c6c062.vsidx b/Client_test_Console/Client_test_vs/.vs/Client_test_vs/FileContentIndex/f85dc867-721e-4d26-94be-1af343c6c062.vsidx
new file mode 100644
index 0000000..c2bcfbc
Binary files /dev/null and b/Client_test_Console/Client_test_vs/.vs/Client_test_vs/FileContentIndex/f85dc867-721e-4d26-94be-1af343c6c062.vsidx differ
diff --git a/Client_test_Console/Client_test_vs/.vs/Client_test_vs/FileContentIndex/read.lock b/Client_test_Console/Client_test_vs/.vs/Client_test_vs/FileContentIndex/read.lock
new file mode 100644
index 0000000..e69de29
diff --git a/Client_test_Console/Client_test_vs/.vs/Client_test_vs/v17/.suo b/Client_test_Console/Client_test_vs/.vs/Client_test_vs/v17/.suo
new file mode 100644
index 0000000..27bee76
Binary files /dev/null and b/Client_test_Console/Client_test_vs/.vs/Client_test_vs/v17/.suo differ
diff --git a/Client_test_Console/Client_test_vs/.vs/Client_test_vs/v17/Browse.VC.db b/Client_test_Console/Client_test_vs/.vs/Client_test_vs/v17/Browse.VC.db
new file mode 100644
index 0000000..2d96e96
Binary files /dev/null and b/Client_test_Console/Client_test_vs/.vs/Client_test_vs/v17/Browse.VC.db differ
diff --git a/Client_test_Console/Client_test_vs/.vs/Client_test_vs/v17/ipch/AutoPCH/63cb40e87def1ef6/CLIENT_TEST.ipch b/Client_test_Console/Client_test_vs/.vs/Client_test_vs/v17/ipch/AutoPCH/63cb40e87def1ef6/CLIENT_TEST.ipch
new file mode 100644
index 0000000..27e30d2
Binary files /dev/null and b/Client_test_Console/Client_test_vs/.vs/Client_test_vs/v17/ipch/AutoPCH/63cb40e87def1ef6/CLIENT_TEST.ipch differ
diff --git a/Client_test_Console/Client_test_vs/.vs/Client_test_vs/v17/ipch/AutoPCH/e30d82a4a6b6f109/MAIN.ipch b/Client_test_Console/Client_test_vs/.vs/Client_test_vs/v17/ipch/AutoPCH/e30d82a4a6b6f109/MAIN.ipch
new file mode 100644
index 0000000..a78d33a
Binary files /dev/null and b/Client_test_Console/Client_test_vs/.vs/Client_test_vs/v17/ipch/AutoPCH/e30d82a4a6b6f109/MAIN.ipch differ
diff --git a/Client_test_Console/Client_test_vs/.vs/ProjectSettings.json b/Client_test_Console/Client_test_vs/.vs/ProjectSettings.json
new file mode 100644
index 0000000..0cf5ea5
--- /dev/null
+++ b/Client_test_Console/Client_test_vs/.vs/ProjectSettings.json
@@ -0,0 +1,3 @@
+{
+ "CurrentProjectSetting": "No Configurations"
+}
\ No newline at end of file
diff --git a/Client_test_Console/Client_test_vs/.vs/VSWorkspaceState.json b/Client_test_Console/Client_test_vs/.vs/VSWorkspaceState.json
new file mode 100644
index 0000000..c33fa42
--- /dev/null
+++ b/Client_test_Console/Client_test_vs/.vs/VSWorkspaceState.json
@@ -0,0 +1,8 @@
+{
+ "ExpandedNodes": [
+ "",
+ "\\Client_test"
+ ],
+ "SelectedNode": "\\Client_test\\main.cpp",
+ "PreviewInSolutionExplorer": false
+}
\ No newline at end of file
diff --git a/Client_test_Console/Client_test_vs/.vs/slnx.sqlite b/Client_test_Console/Client_test_vs/.vs/slnx.sqlite
new file mode 100644
index 0000000..8724ae2
Binary files /dev/null and b/Client_test_Console/Client_test_vs/.vs/slnx.sqlite differ
diff --git a/Client_test_Console/Client_test_vs/Client_test.sln b/Client_test_Console/Client_test_vs/Client_test.sln
new file mode 100644
index 0000000..d87e2c9
--- /dev/null
+++ b/Client_test_Console/Client_test_vs/Client_test.sln
@@ -0,0 +1,31 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.2.32526.322
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Client_test", "Client_test\Client_test.vcxproj", "{94659AF7-53C6-4954-8827-6E9E09CEA9B7}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|x64 = Debug|x64
+ Debug|x86 = Debug|x86
+ Release|x64 = Release|x64
+ Release|x86 = Release|x86
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {94659AF7-53C6-4954-8827-6E9E09CEA9B7}.Debug|x64.ActiveCfg = Debug|x64
+ {94659AF7-53C6-4954-8827-6E9E09CEA9B7}.Debug|x64.Build.0 = Debug|x64
+ {94659AF7-53C6-4954-8827-6E9E09CEA9B7}.Debug|x86.ActiveCfg = Debug|Win32
+ {94659AF7-53C6-4954-8827-6E9E09CEA9B7}.Debug|x86.Build.0 = Debug|Win32
+ {94659AF7-53C6-4954-8827-6E9E09CEA9B7}.Release|x64.ActiveCfg = Release|x64
+ {94659AF7-53C6-4954-8827-6E9E09CEA9B7}.Release|x64.Build.0 = Release|x64
+ {94659AF7-53C6-4954-8827-6E9E09CEA9B7}.Release|x86.ActiveCfg = Release|Win32
+ {94659AF7-53C6-4954-8827-6E9E09CEA9B7}.Release|x86.Build.0 = Release|Win32
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {7CD804AF-BCC2-48D7-BEA1-903229D224DE}
+ EndGlobalSection
+EndGlobal
diff --git a/Client_test_Console/Client_test_vs/Client_test/ChatWareSocket.cpp b/Client_test_Console/Client_test_vs/Client_test/ChatWareSocket.cpp
new file mode 100644
index 0000000..89b85de
--- /dev/null
+++ b/Client_test_Console/Client_test_vs/Client_test/ChatWareSocket.cpp
@@ -0,0 +1 @@
+#include "ChatWareSocket.h"
diff --git a/Client_test_Console/Client_test_vs/Client_test/ChatWareSocket.h b/Client_test_Console/Client_test_vs/Client_test/ChatWareSocket.h
new file mode 100644
index 0000000..15bf1fd
--- /dev/null
+++ b/Client_test_Console/Client_test_vs/Client_test/ChatWareSocket.h
@@ -0,0 +1,44 @@
+#pragma once
+
+
+#include
+#include
+
+using namespace std;
+
+class ChatWareSocket
+{
+ //캯
+ ChatWareSocket();
+};
+
+//캯
+ChatWareSocket::ChatWareSocket() {
+
+
+}
+
+void initialization() {
+ //ʼֿ
+ WORD w_req = MAKEWORD(2, 2);//汾
+ WSADATA wsadata;
+ int err;
+ err = WSAStartup(w_req, &wsadata);
+ if (err != 0) {
+ cout << "ʼֿʧܣ" << endl;
+ }
+ else {
+ cout << "ʼֿɹ" << endl;
+ }
+ //汾
+ if (LOBYTE(wsadata.wVersion) != 2 || HIBYTE(wsadata.wHighVersion) != 2) {
+ cout << "ֿ汾Ų" << endl;
+ WSACleanup();
+ }
+ else {
+ cout << "ֿ汾ȷ" << endl;
+ }
+ //˵ַϢ
+
+}
+
diff --git a/Client_test_Console/Client_test_vs/Client_test/Client_test.vcxproj b/Client_test_Console/Client_test_vs/Client_test/Client_test.vcxproj
new file mode 100644
index 0000000..2e4ed70
--- /dev/null
+++ b/Client_test_Console/Client_test_vs/Client_test/Client_test.vcxproj
@@ -0,0 +1,139 @@
+
+
+
+
+ Debug
+ Win32
+
+
+ Release
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ x64
+
+
+
+ 16.0
+ Win32Proj
+ {94659af7-53c6-4954-8827-6e9e09cea9b7}
+ Clienttest
+ 10.0
+
+
+
+ Application
+ true
+ v143
+ Unicode
+
+
+ Application
+ false
+ v143
+ true
+ Unicode
+
+
+ Application
+ true
+ v143
+ Unicode
+
+
+ Application
+ false
+ v143
+ true
+ Unicode
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Level3
+ true
+ WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ true
+
+
+ Console
+ true
+
+
+
+
+ Level3
+ true
+ true
+ true
+ WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ true
+
+
+ Console
+ true
+ true
+ true
+
+
+
+
+ Level3
+ true
+ _DEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ true
+
+
+ Console
+ true
+
+
+
+
+ Level3
+ true
+ true
+ true
+ NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ true
+
+
+ Console
+ true
+ true
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Client_test_Console/Client_test_vs/Client_test/Client_test.vcxproj.filters b/Client_test_Console/Client_test_vs/Client_test/Client_test.vcxproj.filters
new file mode 100644
index 0000000..54f0bf7
--- /dev/null
+++ b/Client_test_Console/Client_test_vs/Client_test/Client_test.vcxproj.filters
@@ -0,0 +1,30 @@
+
+
+
+
+ {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
+ cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx
+
+
+ {93995380-89BD-4b04-88EB-625FBE52EBFB}
+ h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd
+
+
+ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
+ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms
+
+
+
+
+ Source Files
+
+
+ Source Files
+
+
+
+
+ Header Files
+
+
+
\ No newline at end of file
diff --git a/Client_test_Console/Client_test_vs/Client_test/Client_test.vcxproj.user b/Client_test_Console/Client_test_vs/Client_test/Client_test.vcxproj.user
new file mode 100644
index 0000000..88a5509
--- /dev/null
+++ b/Client_test_Console/Client_test_vs/Client_test/Client_test.vcxproj.user
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/Client_test_Console/Client_test_vs/Client_test/main.cpp b/Client_test_Console/Client_test_vs/Client_test/main.cpp
new file mode 100644
index 0000000..1647077
--- /dev/null
+++ b/Client_test_Console/Client_test_vs/Client_test/main.cpp
@@ -0,0 +1,20 @@
+// Client_test.cpp : This file contains the 'main' function. Program execution begins and ends there.
+//
+
+#include
+
+int main()
+{
+ std::cout << "Hello World!\n";
+}
+
+// Run program: Ctrl + F5 or Debug > Start Without Debugging menu
+// Debug program: F5 or Debug > Start Debugging menu
+
+// Tips for Getting Started:
+// 1. Use the Solution Explorer window to add/manage files
+// 2. Use the Team Explorer window to connect to source control
+// 3. Use the Output window to see build output and other messages
+// 4. Use the Error List window to view errors
+// 5. Go to Project > Add New Item to create new code files, or Project > Add Existing Item to add existing code files to the project
+// 6. In the future, to open this project again, go to File > Open > Project and select the .sln file
diff --git a/Client_test_Console/Client_test_vs/Client_test/x64/Debug/Client_test.exe.recipe b/Client_test_Console/Client_test_vs/Client_test/x64/Debug/Client_test.exe.recipe
new file mode 100644
index 0000000..eb69620
--- /dev/null
+++ b/Client_test_Console/Client_test_vs/Client_test/x64/Debug/Client_test.exe.recipe
@@ -0,0 +1,11 @@
+
+
+
+
+ C:\Users\Jafari Chen\Desktop\ChatWare\Client_test_Console\Client_test_vs\x64\Debug\Client_test.exe
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Client_test_Console/Client_test_vs/Client_test/x64/Debug/Client_test.ilk b/Client_test_Console/Client_test_vs/Client_test/x64/Debug/Client_test.ilk
new file mode 100644
index 0000000..0977d3b
Binary files /dev/null and b/Client_test_Console/Client_test_vs/Client_test/x64/Debug/Client_test.ilk differ
diff --git a/Client_test_Console/Client_test_vs/Client_test/x64/Debug/Client_test.log b/Client_test_Console/Client_test_vs/Client_test/x64/Debug/Client_test.log
new file mode 100644
index 0000000..60cc420
--- /dev/null
+++ b/Client_test_Console/Client_test_vs/Client_test/x64/Debug/Client_test.log
@@ -0,0 +1,2 @@
+ main.cpp
+ Client_test.vcxproj -> C:\Users\Jafari Chen\Desktop\ChatWare\Client_test_Console\Client_test_vs\x64\Debug\Client_test.exe
diff --git a/Client_test_Console/Client_test_vs/Client_test/x64/Debug/Client_test.tlog/CL.command.1.tlog b/Client_test_Console/Client_test_vs/Client_test/x64/Debug/Client_test.tlog/CL.command.1.tlog
new file mode 100644
index 0000000..21e9306
Binary files /dev/null and b/Client_test_Console/Client_test_vs/Client_test/x64/Debug/Client_test.tlog/CL.command.1.tlog differ
diff --git a/Client_test_Console/Client_test_vs/Client_test/x64/Debug/Client_test.tlog/CL.read.1.tlog b/Client_test_Console/Client_test_vs/Client_test/x64/Debug/Client_test.tlog/CL.read.1.tlog
new file mode 100644
index 0000000..51a1bed
Binary files /dev/null and b/Client_test_Console/Client_test_vs/Client_test/x64/Debug/Client_test.tlog/CL.read.1.tlog differ
diff --git a/Client_test_Console/Client_test_vs/Client_test/x64/Debug/Client_test.tlog/CL.write.1.tlog b/Client_test_Console/Client_test_vs/Client_test/x64/Debug/Client_test.tlog/CL.write.1.tlog
new file mode 100644
index 0000000..cf8adb8
Binary files /dev/null and b/Client_test_Console/Client_test_vs/Client_test/x64/Debug/Client_test.tlog/CL.write.1.tlog differ
diff --git a/Client_test_Console/Client_test_vs/Client_test/x64/Debug/Client_test.tlog/Client_test.lastbuildstate b/Client_test_Console/Client_test_vs/Client_test/x64/Debug/Client_test.tlog/Client_test.lastbuildstate
new file mode 100644
index 0000000..e23e00b
--- /dev/null
+++ b/Client_test_Console/Client_test_vs/Client_test/x64/Debug/Client_test.tlog/Client_test.lastbuildstate
@@ -0,0 +1,2 @@
+PlatformToolSet=v143:VCToolArchitecture=Native64Bit:VCToolsVersion=14.32.31326:TargetPlatformVersion=10.0.19041.0:
+Debug|x64|C:\Users\Jafari Chen\Desktop\ChatWare\Client_test_Console\Client_test_vs\|
diff --git a/Client_test_Console/Client_test_vs/Client_test/x64/Debug/Client_test.tlog/link.command.1.tlog b/Client_test_Console/Client_test_vs/Client_test/x64/Debug/Client_test.tlog/link.command.1.tlog
new file mode 100644
index 0000000..85e3e76
Binary files /dev/null and b/Client_test_Console/Client_test_vs/Client_test/x64/Debug/Client_test.tlog/link.command.1.tlog differ
diff --git a/Client_test_Console/Client_test_vs/Client_test/x64/Debug/Client_test.tlog/link.read.1.tlog b/Client_test_Console/Client_test_vs/Client_test/x64/Debug/Client_test.tlog/link.read.1.tlog
new file mode 100644
index 0000000..00b122b
Binary files /dev/null and b/Client_test_Console/Client_test_vs/Client_test/x64/Debug/Client_test.tlog/link.read.1.tlog differ
diff --git a/Client_test_Console/Client_test_vs/Client_test/x64/Debug/Client_test.tlog/link.write.1.tlog b/Client_test_Console/Client_test_vs/Client_test/x64/Debug/Client_test.tlog/link.write.1.tlog
new file mode 100644
index 0000000..aed910f
Binary files /dev/null and b/Client_test_Console/Client_test_vs/Client_test/x64/Debug/Client_test.tlog/link.write.1.tlog differ
diff --git a/Client_test_Console/Client_test_vs/Client_test/x64/Debug/main.obj b/Client_test_Console/Client_test_vs/Client_test/x64/Debug/main.obj
new file mode 100644
index 0000000..cee88d5
Binary files /dev/null and b/Client_test_Console/Client_test_vs/Client_test/x64/Debug/main.obj differ
diff --git a/Client_test_Console/Client_test_vs/Client_test/x64/Debug/vc143.idb b/Client_test_Console/Client_test_vs/Client_test/x64/Debug/vc143.idb
new file mode 100644
index 0000000..6998b50
Binary files /dev/null and b/Client_test_Console/Client_test_vs/Client_test/x64/Debug/vc143.idb differ
diff --git a/Client_test_Console/Client_test_vs/Client_test/x64/Debug/vc143.pdb b/Client_test_Console/Client_test_vs/Client_test/x64/Debug/vc143.pdb
new file mode 100644
index 0000000..5aa8e3a
Binary files /dev/null and b/Client_test_Console/Client_test_vs/Client_test/x64/Debug/vc143.pdb differ
diff --git a/Client_test_Console/Client_test_vs/x64/Debug/Client_test.exe b/Client_test_Console/Client_test_vs/x64/Debug/Client_test.exe
new file mode 100644
index 0000000..fd5e50c
Binary files /dev/null and b/Client_test_Console/Client_test_vs/x64/Debug/Client_test.exe differ
diff --git a/Client_test_Console/Client_test_vs/x64/Debug/Client_test.pdb b/Client_test_Console/Client_test_vs/x64/Debug/Client_test.pdb
new file mode 100644
index 0000000..7250064
Binary files /dev/null and b/Client_test_Console/Client_test_vs/x64/Debug/Client_test.pdb differ
diff --git a/Client_test_Console/qt/CMakeLists.txt b/Client_test_Console/qt/CMakeLists.txt
new file mode 100644
index 0000000..71761bd
--- /dev/null
+++ b/Client_test_Console/qt/CMakeLists.txt
@@ -0,0 +1,27 @@
+cmake_minimum_required(VERSION 3.14)
+
+project(Client_Test LANGUAGES CXX)
+
+set(CMAKE_INCLUDE_CURRENT_DIR ON)
+
+set(CMAKE_AUTOUIC ON)
+set(CMAKE_AUTOMOC ON)
+set(CMAKE_AUTORCC ON)
+
+set(CMAKE_CXX_STANDARD 11)
+set(CMAKE_CXX_STANDARD_REQUIRED ON)
+
+find_package(QT NAMES Qt6 Qt5 COMPONENTS Core REQUIRED)
+find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Core REQUIRED)
+
+set(PROJECT_SOURCES
+ main.cpp
+ chatwaresocket.h
+ chatwaresocket.cpp
+)
+
+add_executable(Client_Test
+ main.cpp
+)
+
+target_link_libraries(Client_Test Qt${QT_VERSION_MAJOR}::Core)
diff --git a/Client_test_Console/qt/CMakeLists.txt.user b/Client_test_Console/qt/CMakeLists.txt.user
new file mode 100644
index 0000000..fd8fadf
--- /dev/null
+++ b/Client_test_Console/qt/CMakeLists.txt.user
@@ -0,0 +1,755 @@
+
+
+
+
+
+ EnvironmentId
+ {1d41e3d4-7c21-43ed-8d33-3717b0e324b3}
+
+
+ ProjectExplorer.Project.ActiveTarget
+ 1
+
+
+ ProjectExplorer.Project.EditorSettings
+
+ true
+ false
+ true
+
+ Cpp
+
+ CppGlobal
+
+
+
+ QmlJS
+
+ QmlJSGlobal
+
+
+ 2
+ UTF-8
+ false
+ 4
+ false
+ 80
+ true
+ true
+ 1
+ false
+ true
+ false
+ 0
+ true
+ true
+ 0
+ 8
+ true
+ false
+ 1
+ true
+ true
+ true
+ *.md, *.MD, Makefile
+ false
+ true
+
+
+
+ ProjectExplorer.Project.PluginSettings
+
+
+ true
+ false
+ true
+ true
+ true
+ true
+
+
+ 0
+ true
+
+ -fno-delayed-template-parsing
+
+ true
+ Builtin.BuildSystem
+
+ true
+ true
+ Builtin.DefaultTidyAndClazy
+ 8
+
+
+
+ true
+
+
+
+
+ ProjectExplorer.Project.Target.0
+
+ Desktop
+ Desktop (x86-windows-msvc2022-pe-64bit)
+ Desktop (x86-windows-msvc2022-pe-64bit)
+ {76d26a33-aea9-4cc5-8c15-5177ac61f114}
+ 0
+ 0
+ 0
+
+ Debug
+ -GNinja
+-DCMAKE_BUILD_TYPE:STRING=Debug
+-DCMAKE_PROJECT_INCLUDE_BEFORE:PATH=%{IDE:ResourcePath}/package-manager/auto-setup.cmake
+-DQT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}
+-DCMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}
+-DCMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}
+-DCMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}
+ C:\Users\Jafari Chen\Desktop\build-Client_Test-Desktop_x86_windows_msvc2022_pe_64bit-Debug
+
+
+
+ all
+
+ true
+ Build
+ CMakeProjectManager.MakeStep
+
+ 1
+ Build
+ Build
+ ProjectExplorer.BuildSteps.Build
+
+
+
+
+ clean
+
+ true
+ Build
+ CMakeProjectManager.MakeStep
+
+ 1
+ Clean
+ Clean
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ false
+
+ Debug
+ CMakeProjectManager.CMakeBuildConfiguration
+
+
+ Release
+ -GNinja
+-DCMAKE_BUILD_TYPE:STRING=Release
+-DCMAKE_PROJECT_INCLUDE_BEFORE:PATH=%{IDE:ResourcePath}/package-manager/auto-setup.cmake
+-DQT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}
+-DCMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}
+-DCMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}
+-DCMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}
+ C:\Users\Jafari Chen\Desktop\build-Client_Test-Desktop_x86_windows_msvc2022_pe_64bit-Release
+
+
+
+ all
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Build
+ Build
+ ProjectExplorer.BuildSteps.Build
+
+
+
+
+ clean
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Clean
+ Clean
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ false
+
+ Release
+ CMakeProjectManager.CMakeBuildConfiguration
+
+
+ RelWithDebInfo
+ -GNinja
+-DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo
+-DCMAKE_PROJECT_INCLUDE_BEFORE:PATH=%{IDE:ResourcePath}/package-manager/auto-setup.cmake
+-DQT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}
+-DCMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}
+-DCMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}
+-DCMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}
+ C:\Users\Jafari Chen\Desktop\build-Client_Test-Desktop_x86_windows_msvc2022_pe_64bit-RelWithDebInfo
+
+
+
+ all
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Build
+ Build
+ ProjectExplorer.BuildSteps.Build
+
+
+
+
+ clean
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Clean
+ Clean
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ false
+
+ Release with Debug Information
+ CMakeProjectManager.CMakeBuildConfiguration
+
+
+ MinSizeRel
+ -GNinja
+-DCMAKE_BUILD_TYPE:STRING=MinSizeRel
+-DCMAKE_PROJECT_INCLUDE_BEFORE:PATH=%{IDE:ResourcePath}/package-manager/auto-setup.cmake
+-DQT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}
+-DCMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}
+-DCMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}
+-DCMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}
+ C:\Users\Jafari Chen\Desktop\build-Client_Test-Desktop_x86_windows_msvc2022_pe_64bit-MinSizeRel
+
+
+
+ all
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Build
+ Build
+ ProjectExplorer.BuildSteps.Build
+
+
+
+
+ clean
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Clean
+ Clean
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ false
+
+ Minimum Size Release
+ CMakeProjectManager.CMakeBuildConfiguration
+
+ 4
+
+
+ 0
+ Deploy
+ Deploy
+ ProjectExplorer.BuildSteps.Deploy
+
+ 1
+
+ false
+ ProjectExplorer.DefaultDeployConfiguration
+
+ 1
+
+ true
+ true
+ true
+
+ 2
+
+ Client_Test
+ CMakeProjectManager.CMakeRunConfiguration.Client_Test
+ Client_Test
+ false
+ true
+ true
+ false
+ true
+ C:/Users/Jafari Chen/Desktop/build-Client_Test-Desktop_x86_windows_msvc2022_pe_64bit-Debug
+
+ 1
+
+
+
+ ProjectExplorer.Project.Target.1
+
+ Desktop
+ Desktop Qt 6.2.2 MSVC2019 64bit
+ Desktop Qt 6.2.2 MSVC2019 64bit
+ qt.qt6.622.win64_msvc2019_64_kit
+ 0
+ 0
+ 0
+
+ Debug
+ -GNinja
+-DCMAKE_BUILD_TYPE:STRING=Debug
+-DCMAKE_PROJECT_INCLUDE_BEFORE:PATH=%{IDE:ResourcePath}/package-manager/auto-setup.cmake
+-DQT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}
+-DCMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}
+-DCMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}
+-DCMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}
+ C:\Users\Jafari Chen\Desktop\build-Client_Test-Desktop_Qt_6_2_2_MSVC2019_64bit-Debug
+
+
+
+ all
+
+ true
+ Build
+ CMakeProjectManager.MakeStep
+
+ 1
+ Build
+ Build
+ ProjectExplorer.BuildSteps.Build
+
+
+
+
+ clean
+
+ true
+ Build
+ CMakeProjectManager.MakeStep
+
+ 1
+ Clean
+ Clean
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ false
+
+ Debug
+ CMakeProjectManager.CMakeBuildConfiguration
+
+
+ Release
+ -GNinja
+-DCMAKE_BUILD_TYPE:STRING=Release
+-DCMAKE_PROJECT_INCLUDE_BEFORE:PATH=%{IDE:ResourcePath}/package-manager/auto-setup.cmake
+-DQT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}
+-DCMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}
+-DCMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}
+-DCMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}
+ C:\Users\Jafari Chen\Desktop\build-Client_Test-Desktop_Qt_6_2_2_MSVC2019_64bit-Release
+
+
+
+ all
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Build
+ Build
+ ProjectExplorer.BuildSteps.Build
+
+
+
+
+ clean
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Clean
+ Clean
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ false
+
+ Release
+ CMakeProjectManager.CMakeBuildConfiguration
+
+
+ RelWithDebInfo
+ -GNinja
+-DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo
+-DCMAKE_PROJECT_INCLUDE_BEFORE:PATH=%{IDE:ResourcePath}/package-manager/auto-setup.cmake
+-DQT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}
+-DCMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}
+-DCMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}
+-DCMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}
+ C:\Users\Jafari Chen\Desktop\build-Client_Test-Desktop_Qt_6_2_2_MSVC2019_64bit-RelWithDebInfo
+
+
+
+ all
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Build
+ Build
+ ProjectExplorer.BuildSteps.Build
+
+
+
+
+ clean
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Clean
+ Clean
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ false
+
+ Release with Debug Information
+ CMakeProjectManager.CMakeBuildConfiguration
+
+
+ MinSizeRel
+ -GNinja
+-DCMAKE_BUILD_TYPE:STRING=MinSizeRel
+-DCMAKE_PROJECT_INCLUDE_BEFORE:PATH=%{IDE:ResourcePath}/package-manager/auto-setup.cmake
+-DQT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}
+-DCMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}
+-DCMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}
+-DCMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}
+ C:\Users\Jafari Chen\Desktop\build-Client_Test-Desktop_Qt_6_2_2_MSVC2019_64bit-MinSizeRel
+
+
+
+ all
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Build
+ Build
+ ProjectExplorer.BuildSteps.Build
+
+
+
+
+ clean
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Clean
+ Clean
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ false
+
+ Minimum Size Release
+ CMakeProjectManager.CMakeBuildConfiguration
+
+ 4
+
+
+ 0
+ Deploy
+ Deploy
+ ProjectExplorer.BuildSteps.Deploy
+
+ 1
+
+ false
+ ProjectExplorer.DefaultDeployConfiguration
+
+ 1
+
+ true
+ true
+ true
+
+ 2
+
+ Client_Test
+ CMakeProjectManager.CMakeRunConfiguration.Client_Test
+ Client_Test
+ false
+ true
+ true
+ false
+ true
+ C:/Users/Jafari Chen/Desktop/build-Client_Test-Desktop_Qt_6_2_2_MSVC2019_64bit-Debug
+
+ 1
+
+
+
+ ProjectExplorer.Project.Target.2
+
+ WebAssemblyDeviceType
+ Qt 6.2.2 WebAssembly
+ Qt 6.2.2 WebAssembly
+ qt.qt6.622.wasm_32_kit
+ 0
+ -1
+ 0
+
+ Debug
+ -GNinja
+-DCMAKE_BUILD_TYPE:STRING=Debug
+-DCMAKE_PROJECT_INCLUDE_BEFORE:PATH=%{IDE:ResourcePath}/package-manager/auto-setup.cmake
+-DQT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}
+-DCMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}
+-DCMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}
+-DCMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}
+-DCMAKE_TOOLCHAIN_FILE:PATH=%{Qt:QT_INSTALL_PREFIX}/lib/cmake/Qt6/qt.toolchain.cmake
+ C:\Users\Jafari Chen\Desktop\build-Client_Test-Qt_6_2_2_WebAssembly-Debug
+
+
+
+ all
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Build
+ Build
+ ProjectExplorer.BuildSteps.Build
+
+
+
+
+ clean
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Clean
+ Clean
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ false
+
+ Debug
+ CMakeProjectManager.CMakeBuildConfiguration
+
+
+ Release
+ -GNinja
+-DCMAKE_BUILD_TYPE:STRING=Release
+-DCMAKE_PROJECT_INCLUDE_BEFORE:PATH=%{IDE:ResourcePath}/package-manager/auto-setup.cmake
+-DQT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}
+-DCMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}
+-DCMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}
+-DCMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}
+-DCMAKE_TOOLCHAIN_FILE:PATH=%{Qt:QT_INSTALL_PREFIX}/lib/cmake/Qt6/qt.toolchain.cmake
+ C:\Users\Jafari Chen\Desktop\build-Client_Test-Qt_6_2_2_WebAssembly-Release
+
+
+
+ all
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Build
+ Build
+ ProjectExplorer.BuildSteps.Build
+
+
+
+
+ clean
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Clean
+ Clean
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ false
+
+ Release
+ CMakeProjectManager.CMakeBuildConfiguration
+
+
+ RelWithDebInfo
+ -GNinja
+-DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo
+-DCMAKE_PROJECT_INCLUDE_BEFORE:PATH=%{IDE:ResourcePath}/package-manager/auto-setup.cmake
+-DQT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}
+-DCMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}
+-DCMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}
+-DCMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}
+-DCMAKE_TOOLCHAIN_FILE:PATH=%{Qt:QT_INSTALL_PREFIX}/lib/cmake/Qt6/qt.toolchain.cmake
+ C:\Users\Jafari Chen\Desktop\build-Client_Test-Qt_6_2_2_WebAssembly-RelWithDebInfo
+
+
+
+ all
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Build
+ Build
+ ProjectExplorer.BuildSteps.Build
+
+
+
+
+ clean
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Clean
+ Clean
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ false
+
+ Release with Debug Information
+ CMakeProjectManager.CMakeBuildConfiguration
+
+
+ MinSizeRel
+ -GNinja
+-DCMAKE_BUILD_TYPE:STRING=MinSizeRel
+-DCMAKE_PROJECT_INCLUDE_BEFORE:PATH=%{IDE:ResourcePath}/package-manager/auto-setup.cmake
+-DQT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}
+-DCMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}
+-DCMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}
+-DCMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}
+-DCMAKE_TOOLCHAIN_FILE:PATH=%{Qt:QT_INSTALL_PREFIX}/lib/cmake/Qt6/qt.toolchain.cmake
+ C:\Users\Jafari Chen\Desktop\build-Client_Test-Qt_6_2_2_WebAssembly-MinSizeRel
+
+
+
+ all
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Build
+ Build
+ ProjectExplorer.BuildSteps.Build
+
+
+
+
+ clean
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Clean
+ Clean
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ false
+
+ Minimum Size Release
+ CMakeProjectManager.CMakeBuildConfiguration
+
+ 4
+ 0
+
+ true
+ true
+ true
+
+ Launch with emrun
+ WebAssembly.RunConfiguration.Emrun
+
+ false
+ true
+ false
+ true
+
+
+ 1
+
+
+
+ ProjectExplorer.Project.TargetCount
+ 3
+
+
+ ProjectExplorer.Project.Updater.FileVersion
+ 22
+
+
+ Version
+ 22
+
+
diff --git a/Client_test_Console/qt/chatwaresocket.cpp b/Client_test_Console/qt/chatwaresocket.cpp
new file mode 100644
index 0000000..8f3db97
--- /dev/null
+++ b/Client_test_Console/qt/chatwaresocket.cpp
@@ -0,0 +1,6 @@
+#include "chatwaresocket.h"
+
+ChatWareSocket::ChatWareSocket()
+{
+
+}
diff --git a/Client_test_Console/qt/chatwaresocket.h b/Client_test_Console/qt/chatwaresocket.h
new file mode 100644
index 0000000..a0b9ddb
--- /dev/null
+++ b/Client_test_Console/qt/chatwaresocket.h
@@ -0,0 +1,11 @@
+#ifndef CHATWARESOCKET_H
+#define CHATWARESOCKET_H
+
+
+class ChatWareSocket
+{
+public:
+ ChatWareSocket();
+};
+
+#endif // CHATWARESOCKET_H
diff --git a/Client_test_Console/qt/main.cpp b/Client_test_Console/qt/main.cpp
new file mode 100644
index 0000000..470a030
--- /dev/null
+++ b/Client_test_Console/qt/main.cpp
@@ -0,0 +1,8 @@
+#include
+
+int main(int argc, char *argv[])
+{
+ QCoreApplication a(argc, argv);
+
+ return a.exec();
+}
diff --git a/README.md b/README.md
index ece0ca3..e2a0190 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1,2 @@
-# SealedLips
-A end-to-end encrypted IM app that provides ultimate secrecy
+# ChatWare
+This a repository for an online chat project
diff --git a/client-qt/Session.cpp b/client-qt/Session.cpp
new file mode 100644
index 0000000..d0d08e0
--- /dev/null
+++ b/client-qt/Session.cpp
@@ -0,0 +1,119 @@
+#include "Session.h"
+#include
+Session::Session(QTcpSocket* socket)
+{
+ m_socket = socket;
+ m_type = RECV_HEAD;
+ m_head = NULL;
+ m_bufLen = 0;
+ m_readPos = 0;
+ m_body = NULL;
+ m_isFinish = false;
+ m_head = new char[sizeof(DeMessageHead)];
+ m_bufLen = sizeof(DeMessageHead);
+}
+
+Session::~Session(){
+ if (m_head != NULL)
+ delete[] m_head;
+ if (m_body != NULL)
+ delete[] m_body;
+ if (m_socket != NULL){
+ m_socket->close();
+ m_socket = NULL;
+ }
+};
+
+int Session::readEvent()
+{
+ int ret = 0;
+ switch (m_type)
+ {
+ case RECV_HEAD:
+ ret = recvHead();
+ break;
+ case RECV_BODY:
+ ret = recvBody();
+ break;
+ default:
+ break;
+ }
+ if (ret == RET_AGAIN)
+ return readEvent();
+ return ret;
+}
+
+int Session::recvHead()
+{
+ if (m_head == NULL)
+ {
+ m_head = new char[sizeof(DeMessageHead)];
+ assert(m_head != NULL);
+ m_bufLen = sizeof(DeMessageHead);
+ m_readPos = 0;
+ }
+ int len = m_socket->read(m_head + m_readPos, m_bufLen - m_readPos);
+ if (len < 0)
+ return RET_ERROR;
+ if (len == 0)
+ return RET_END;
+ m_readPos += len;
+ if (m_readPos == m_bufLen)
+ {
+ m_type = RECV_BODY;
+ int bufLen = ((DeMessageHead *)m_head)->length;
+ m_body = new char[bufLen];
+
+ assert(m_body != NULL);
+ m_bufLen = bufLen;
+ m_readPos = 0; //读取的位置置零
+ return RET_AGAIN;
+ }
+ return 0;
+}
+
+int Session::recvBody()
+{
+ /* 先判断读取的位置是否是 ((DeMessageHead*)m_head)->length 接收头指定的长度 */
+ if (m_readPos == m_bufLen)
+ {
+ m_type = RECV_HEAD;
+ handleMsgBase();
+ m_isFinish = true;
+ return RET_AGAIN;
+ }
+ /* 读取指定 Body 大小的数据 */
+ int len = m_socket->read(m_body + m_readPos, m_bufLen - m_readPos);
+
+ if (len < 0)
+ return RET_ERROR;
+
+ m_readPos += len;
+
+ /* 判断读取的位置是否是 ((DeMessageHead*)m_head)->length 接收头指定的长度 */
+ if (m_readPos == m_bufLen)
+ {
+ m_type = RECV_HEAD;
+ handleMsgBase();
+ m_bufLen = 0;
+ m_isFinish = true;
+ return RET_AGAIN;
+ }
+ return RET_OK;
+}
+
+int Session::handleMsgBase(){
+ recvMsg *rMsg = new recvMsg();
+ rMsg->head = m_head;
+ rMsg->body = m_body;
+ rMsg->bodyLen = m_bufLen;
+ emit signal_handleMsg(rMsg);
+// handleMsg(rMsg);
+ m_head = NULL;
+ m_body = NULL;
+ return RET_OK;
+}
+
+void Session::cleanSession(){
+
+}
diff --git a/client-qt/Session.h b/client-qt/Session.h
new file mode 100644
index 0000000..ecbd446
--- /dev/null
+++ b/client-qt/Session.h
@@ -0,0 +1,77 @@
+#ifndef SESSION_H
+#define SESSION_H
+#include "common.h"
+#include
+#include
+#include
+
+//用于保存收到的MA的消息
+typedef struct _recvMsg
+{
+ _recvMsg()
+ {
+ head = NULL;
+ body = NULL;
+ bodyLen = 0;
+ }
+ ~_recvMsg()
+ {
+ if (head != NULL)
+ {
+ delete[] head;
+ head = NULL;
+ }
+
+ if (body != NULL)
+ {
+ delete[] body;
+ body = NULL;
+ }
+ }
+ char *head;
+ char *body;
+ int bodyLen;
+}recvMsg;
+
+typedef enum
+{
+ RECV_HEAD = 0,
+ RECV_BODY
+}recvType;
+
+
+class Session:public QObject
+{
+ Q_OBJECT
+public:
+ Session(QTcpSocket* socket);
+ ~Session();
+public:
+ int readEvent();
+ int recvHead();
+ int recvBody();
+ int handleMsgBase();
+// int handleMsg(recvMsg *rMsg);
+// static void sendMsg(QTcpSocket* socket,void*buf,int bufLen,int type,int error=0);
+signals:
+ void signal_handleMsg(recvMsg *rMsg);
+public:
+// static int handleRegiste(void*arg,void*msg);
+// static int handleLogin(void*arg,void*msg);
+// static int handleLogout(void*arg,void*msg);
+// static int handleGroupChat(void*arg,void*msg);
+// int getGroupList(void*msg);
+// int getGroupInfo(void* msg);
+private:
+ void cleanSession();
+private:
+ QTcpSocket* m_socket;
+ recvType m_type; //接收消息类型
+ char *m_head; //接收到的头信息
+ int m_bufLen; //需要接收消息的长度
+ int m_readPos; //当前读取到的长度
+ char *m_body; //接收到的body
+ bool m_isFinish; //接收消息,用来判断是否接收完全
+};
+
+#endif // SESSION_H
diff --git a/client-qt/addfrienddialog.cpp b/client-qt/addfrienddialog.cpp
new file mode 100644
index 0000000..3a59045
--- /dev/null
+++ b/client-qt/addfrienddialog.cpp
@@ -0,0 +1,49 @@
+#include "addfrienddialog.h"
+#include "ui_addfrienddialog.h"
+
+AddFriendDialog::AddFriendDialog(QWidget *parent) :
+ QDialog(parent),
+ ui(new Ui::AddFriendDialog)
+{
+ ui->setupUi(this);
+ this->setWindowTitle("WeChat 查找");
+ ui->widget_friendInfo->hide();
+ setWindowFlags(windowFlags() | Qt::WindowMinimizeButtonHint); // 最小化按钮
+ setWindowFlags(windowFlags() | Qt::WindowContextHelpButtonHint); // 帮助按钮
+}
+
+AddFriendDialog::~AddFriendDialog()
+{
+ delete ui;
+}
+
+void AddFriendDialog::on_pushButton_find_clicked()
+{
+ ChatLogInfo()<<"on_pushButton_find_clicked in..";
+ int account = ui->lineEdit_account->text().toInt();
+ /**
+ * @brief 因为要维护一个大群(群号为0),所有用户在线都在里面,查找好友暂定在大群里面查找
+ * 后期为了应对高并发会从服务器获取好友信息
+ */
+ GroupUserInfo* userInfo;
+ userInfo = ChatInfoManage::getInstance()->getUserInfo(account);
+ if(userInfo!= NULL){
+ ui->widget_friendInfo->show();
+ //找到该用户,显示用户信息
+ m_addFriendInfoReq.m_friendAccount = userInfo->m_account; //保存账号
+ m_addFriendInfoReq.m_senderAccount = -1;
+ ui->lineEdit_friendName->setText(QString(userInfo->m_userName));
+ ui->lineEdit_friend_account->setText(QString::number(userInfo->m_account));
+ }
+ else {
+ ui->widget_friendInfo->hide();
+ }
+ ChatLogInfo()<<"on_pushButton_find_clicked out..";
+}
+
+void AddFriendDialog::on_pushButton_addFriend_clicked()
+{
+ memset(m_addFriendInfoReq.m_reqInfo,'\0',sizeof(m_addFriendInfoReq.m_reqInfo));
+ strncpy(m_addFriendInfoReq.m_reqInfo,ui->textEdit_reqInfo->toPlainText().toStdString().c_str(),ui->textEdit_reqInfo->toPlainText().toStdString().size());
+ return accept(); //Closes the dialog and emits the accepted() signal.
+}
diff --git a/client-qt/addfrienddialog.h b/client-qt/addfrienddialog.h
new file mode 100644
index 0000000..86a66fa
--- /dev/null
+++ b/client-qt/addfrienddialog.h
@@ -0,0 +1,34 @@
+#ifndef ADDFRIENDDIALOG_H
+#define ADDFRIENDDIALOG_H
+
+#include "common.h"
+#include "widget.h"
+#include
+
+namespace Ui {
+class AddFriendDialog;
+}
+
+class AddFriendDialog : public QDialog
+{
+ Q_OBJECT
+
+public:
+ explicit AddFriendDialog(QWidget *parent = nullptr);
+ ~AddFriendDialog();
+public:
+ AddFriendInfoReq getAddFriendInfoReq(){
+ return m_addFriendInfoReq;
+ }
+private slots:
+ void on_pushButton_find_clicked();
+
+ void on_pushButton_addFriend_clicked();
+signals:
+ void signal_findUserInfo(int account);
+private:
+ Ui::AddFriendDialog *ui;
+ AddFriendInfoReq m_addFriendInfoReq;
+};
+
+#endif // ADDFRIENDDIALOG_H
diff --git a/client-qt/addfrienddialog.ui b/client-qt/addfrienddialog.ui
new file mode 100644
index 0000000..b12dc12
--- /dev/null
+++ b/client-qt/addfrienddialog.ui
@@ -0,0 +1,190 @@
+
+
+ AddFriendDialog
+
+
+
+ 0
+ 0
+ 444
+ 486
+
+
+
+ Dialog
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+ -
+
+
+ 0
+
+
+
+ 添加好友
+
+
+
+
+ 20
+ 90
+ 361
+ 341
+
+
+
+
+
+ 270
+ 290
+ 75
+ 23
+
+
+
+ QPushButton{
+ background-color: rgb(80, 156, 255);
+
+ color: rgb(255, 255, 255);
+ border-style: solid;
+ border-radius: 5px;
+
+}
+
+QPushButton:hover{
+ background-color: rgb(56,205,127);
+}
+
+QPushButton:pressed {
+ background-color: rgb(7,193,96);
+}
+
+
+ 添加好友
+
+
+
+
+
+ 20
+ 20
+ 331
+ 264
+
+
+
+
-
+
+
-
+
+
+ 昵称:
+
+
+
+ -
+
+
+
+
+ -
+
+
-
+
+
+ 账号:
+
+
+
+ -
+
+
+
+
+ -
+
+
-
+
+
+ 验证信息:
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+ 40
+ 30
+ 311
+ 31
+
+
+
+ -
+
+
+ 账号:
+
+
+
+ -
+
+
+ -
+
+
+ QPushButton{
+ background-color: rgb(80, 156, 255);
+
+ color: rgb(255, 255, 255);
+ border-style: solid;
+ border-radius: 5px;
+
+}
+
+QPushButton:hover{
+ background-color: rgb(56,205,127);
+}
+
+QPushButton:pressed {
+ background-color: rgb(7,193,96);
+}
+
+
+ 查找
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/client-qt/aesdecrypt.cpp b/client-qt/aesdecrypt.cpp
new file mode 100644
index 0000000..a98ac4f
--- /dev/null
+++ b/client-qt/aesdecrypt.cpp
@@ -0,0 +1,96 @@
+#if 0
+
+#include
+
+#include
+#include
+#include
+
+
+#include
+#include
+
+using namespace std;
+
+byte key[ CryptoPP::AES::DEFAULT_KEYLENGTH ], iv[ CryptoPP::AES::BLOCKSIZE];
+
+void initKV()
+{
+ memset( key, 0x00, CryptoPP::AES::DEFAULT_KEYLENGTH );
+ memset( iv, 0x00, CryptoPP::AES::BLOCKSIZE );
+
+ // 或者也可以
+ /*
+ char tmpK[] = "1234567890123456";
+ char tmpIV[] = "1234567890123456";
+ for (int j = 0; j < CryptoPP::AES::DEFAULT_KEYLENGTH; ++j)
+ {
+ key[j] = tmpK[j];
+ }
+
+ for (int i = 0; i < CryptoPP::AES::BLOCKSIZE; ++i)
+ {
+ iv[i] = tmpIV[i];
+ }
+ */
+}
+
+string decrypt(string cipherTextHex)
+{
+ string cipherText;
+ string decryptedText;
+
+ int i = 0;
+ while(true)
+ {
+ char c;
+ int x;
+ stringstream ss;
+ ss<>x;
+ c = (char)x;
+ cipherText += c;
+ if(i >= cipherTextHex.length() - 2)break;
+ i += 2;
+ }
+
+ //
+ CryptoPP::AES::Decryption aesDecryption(key, CryptoPP::AES::DEFAULT_KEYLENGTH);
+ CryptoPP::CBC_Mode_ExternalCipher::Decryption cbcDecryption( aesDecryption, iv );
+ CryptoPP::StreamTransformationFilter stfDecryptor(cbcDecryption, new CryptoPP::StringSink( decryptedText ));
+ stfDecryptor.Put( reinterpret_cast( cipherText.c_str() ), cipherText.size());
+
+ stfDecryptor.MessageEnd();
+
+ return decryptedText;
+}
+
+string readCipher()
+{
+ ifstream in("/tmp/cipher.data");
+
+ string line;
+ string decryptedText;
+ while(getline(in, line))
+ {
+ if(line.length() > 1)
+ {
+ decryptedText += decrypt(line) + "\n";
+ }
+ line.clear();
+ }
+
+ cout<<"readCipher finish "<
+
+#include
+#include
+#include
+
+#include
+#include
+#include
+
+using namespace std;
+
+byte key[ CryptoPP::AES::DEFAULT_KEYLENGTH ], iv[ CryptoPP::AES::BLOCKSIZE];
+
+void initKV()
+{
+ memset( key, 0x00, CryptoPP::AES::DEFAULT_KEYLENGTH );
+ memset( iv, 0x00, CryptoPP::AES::BLOCKSIZE );
+
+ // 或者也可以
+ /*
+ char tmpK[] = "1234567890123456";
+ char tmpIV[] = "1234567890123456";
+ for (int j = 0; j < CryptoPP::AES::DEFAULT_KEYLENGTH; ++j)
+ {
+ key[j] = tmpK[j];
+ }
+ for (int i = 0; i < CryptoPP::AES::BLOCKSIZE; ++i)
+ {
+ iv[i] = tmpIV[i];
+ }
+ */
+}
+
+string encrypt(string plainText)
+{
+ string cipherText;
+
+ //
+ CryptoPP::AES::Encryption aesEncryption(key, CryptoPP::AES::DEFAULT_KEYLENGTH);
+ CryptoPP::CBC_Mode_ExternalCipher::Encryption cbcEncryption( aesEncryption, iv );
+ CryptoPP::StreamTransformationFilter stfEncryptor(cbcEncryption, new CryptoPP::StringSink( cipherText ));
+ stfEncryptor.Put( reinterpret_cast( plainText.c_str() ), plainText.length() + 1 );
+ stfEncryptor.MessageEnd();
+
+ string cipherTextHex;
+ for( int i = 0; i < cipherText.size(); i++ )
+ {
+ char ch[3] = {0};
+ sprintf(ch, "%02x", static_cast(cipherText[i]));
+ cipherTextHex += ch;
+ }
+
+ return cipherTextHex;
+}
+
+
+
+void writeCipher(string output)
+{
+ ofstream out("/tmp/cipher.data");
+ out.write(output.c_str(), output.length());
+ out.close();
+
+ cout<<"writeCipher finish "<
+
+
+
+
+ EnvironmentId
+ {8d58143c-3cf3-4699-bc9b-6c3c945066cd}
+
+
+ ProjectExplorer.Project.ActiveTarget
+ 0
+
+
+ ProjectExplorer.Project.EditorSettings
+
+ true
+ false
+ true
+
+ Cpp
+
+ CppGlobal
+
+
+
+ QmlJS
+
+ QmlJSGlobal
+
+
+ 2
+ UTF-8
+ false
+ 4
+ false
+ 80
+ true
+ true
+ 1
+ true
+ false
+ 0
+ true
+ true
+ 0
+ 8
+ true
+ 2
+ true
+ true
+ true
+ false
+
+
+
+ ProjectExplorer.Project.PluginSettings
+
+
+ -fno-delayed-template-parsing
+
+ true
+
+
+
+ ProjectExplorer.Project.Target.0
+
+ Desktop Qt 5.12.2 MinGW 64-bit
+ Desktop Qt 5.12.2 MinGW 64-bit
+ qt.qt5.5122.win64_mingw73_kit
+ 0
+ 0
+ 0
+
+ C:/Users/Lenovo/Desktop/chat_room-master/build-chat_room_client-Desktop_Qt_5_12_2_MinGW_64_bit-Debug
+
+
+ true
+ qmake
+
+ QtProjectManager.QMakeBuildStep
+ true
+
+ false
+ false
+ false
+
+
+ true
+ Make
+
+ Qt4ProjectManager.MakeStep
+
+ false
+
+
+ false
+
+ 2
+ Build
+
+ ProjectExplorer.BuildSteps.Build
+
+
+
+ true
+ Make
+
+ Qt4ProjectManager.MakeStep
+
+ true
+ clean
+
+ false
+
+ 1
+ Clean
+
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ Debug
+ Debug
+ Qt4ProjectManager.Qt4BuildConfiguration
+ 2
+ true
+
+
+ C:/Users/Lenovo/Desktop/chat_room-master/build-chat_room_client-Desktop_Qt_5_12_2_MinGW_64_bit-Release
+
+
+ true
+ qmake
+
+ QtProjectManager.QMakeBuildStep
+ false
+
+ false
+ false
+ true
+
+
+ true
+ Make
+
+ Qt4ProjectManager.MakeStep
+
+ false
+
+
+ false
+
+ 2
+ Build
+
+ ProjectExplorer.BuildSteps.Build
+
+
+
+ true
+ Make
+
+ Qt4ProjectManager.MakeStep
+
+ true
+ clean
+
+ false
+
+ 1
+ Clean
+
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ Release
+ Release
+ Qt4ProjectManager.Qt4BuildConfiguration
+ 0
+ true
+
+
+ C:/Users/Lenovo/Desktop/chat_room-master/build-chat_room_client-Desktop_Qt_5_12_2_MinGW_64_bit-Profile
+
+
+ true
+ qmake
+
+ QtProjectManager.QMakeBuildStep
+ true
+
+ false
+ true
+ true
+
+
+ true
+ Make
+
+ Qt4ProjectManager.MakeStep
+
+ false
+
+
+ false
+
+ 2
+ Build
+
+ ProjectExplorer.BuildSteps.Build
+
+
+
+ true
+ Make
+
+ Qt4ProjectManager.MakeStep
+
+ true
+ clean
+
+ false
+
+ 1
+ Clean
+
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ Profile
+ Profile
+ Qt4ProjectManager.Qt4BuildConfiguration
+ 0
+ true
+
+ 3
+
+
+ 0
+ 部署
+
+ ProjectExplorer.BuildSteps.Deploy
+
+ 1
+ Deploy Configuration
+
+ ProjectExplorer.DefaultDeployConfiguration
+
+ 1
+
+
+ false
+ false
+ 1000
+
+ true
+
+ false
+ false
+ false
+ false
+ true
+ 0.01
+ 10
+ true
+ 1
+ 25
+
+ 1
+ true
+ false
+ true
+ valgrind
+
+ 0
+ 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+ 10
+ 11
+ 12
+ 13
+ 14
+
+ 2
+
+ chat_room_client
+ chat_room_client2
+ Qt4ProjectManager.Qt4RunConfiguration:C:/Users/Lenovo/Desktop/client-qt/chat_room_client.pro
+ chat_room_client.pro
+
+ 3768
+ false
+ true
+ true
+ false
+ false
+ true
+
+ C:/Users/Lenovo/Desktop/chat_room-master/build-chat_room_client-Desktop_Qt_5_12_2_MinGW_64_bit-Debug
+
+ 1
+
+
+
+ ProjectExplorer.Project.TargetCount
+ 1
+
+
+ ProjectExplorer.Project.Updater.FileVersion
+ 20
+
+
+ Version
+ 20
+
+
diff --git a/client-qt/chat_room_client.pro.user.34b048d.22 b/client-qt/chat_room_client.pro.user.34b048d.22
new file mode 100644
index 0000000..9cbbb8a
--- /dev/null
+++ b/client-qt/chat_room_client.pro.user.34b048d.22
@@ -0,0 +1,267 @@
+
+
+
+
+
+ EnvironmentId
+ {34b048d5-4225-4036-8632-05e3e289a8a5}
+
+
+ ProjectExplorer.Project.ActiveTarget
+ 0
+
+
+ ProjectExplorer.Project.EditorSettings
+
+ true
+ false
+ true
+
+ Cpp
+
+ CppGlobal
+
+
+
+ QmlJS
+
+ QmlJSGlobal
+
+
+ 2
+ UTF-8
+ false
+ 4
+ false
+ 80
+ true
+ true
+ 1
+ false
+ true
+ false
+ 0
+ true
+ true
+ 0
+ 8
+ true
+ false
+ 1
+ true
+ true
+ true
+ *.md, *.MD, Makefile
+ false
+ true
+
+
+
+ ProjectExplorer.Project.PluginSettings
+
+
+ true
+ false
+ true
+ true
+ true
+ true
+
+
+ 0
+ true
+
+ -fno-delayed-template-parsing
+
+ true
+ Builtin.BuildSystem
+
+ true
+ true
+ Builtin.DefaultTidyAndClazy
+ 4
+
+
+
+ true
+
+
+
+
+ ProjectExplorer.Project.Target.0
+
+ Desktop
+ Desktop Qt 5.15.2 MinGW 64-bit
+ Desktop Qt 5.15.2 MinGW 64-bit
+ qt.qt5.5152.win64_mingw81_kit
+ 1
+ 0
+ 0
+
+ 0
+ C:\Users\wsy\Desktop\chat\build-chat_room_client-Desktop_Qt_5_15_2_MinGW_64_bit-Debug
+ C:/Users/wsy/Desktop/chat/build-chat_room_client-Desktop_Qt_5_15_2_MinGW_64_bit-Debug
+
+
+ true
+ QtProjectManager.QMakeBuildStep
+ false
+
+
+
+ true
+ Qt4ProjectManager.MakeStep
+
+ 2
+ Build
+ Build
+ ProjectExplorer.BuildSteps.Build
+
+
+
+ true
+ Qt4ProjectManager.MakeStep
+ clean
+
+ 1
+ Clean
+ Clean
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ false
+
+ Debug
+ Qt4ProjectManager.Qt4BuildConfiguration
+ 2
+
+
+ C:\Users\wsy\Desktop\chat\build-chat_room_client-Desktop_Qt_5_15_2_MinGW_64_bit-Release
+ C:/Users/wsy/Desktop/chat/build-chat_room_client-Desktop_Qt_5_15_2_MinGW_64_bit-Release
+
+
+ true
+ QtProjectManager.QMakeBuildStep
+ false
+
+
+
+ true
+ Qt4ProjectManager.MakeStep
+
+ 2
+ Build
+ Build
+ ProjectExplorer.BuildSteps.Build
+
+
+
+ true
+ Qt4ProjectManager.MakeStep
+ clean
+
+ 1
+ Clean
+ Clean
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ false
+
+ Release
+ Qt4ProjectManager.Qt4BuildConfiguration
+ 0
+ 0
+
+
+ 0
+ C:\Users\wsy\Desktop\chat\build-chat_room_client-Desktop_Qt_5_15_2_MinGW_64_bit-Profile
+ C:/Users/wsy/Desktop/chat/build-chat_room_client-Desktop_Qt_5_15_2_MinGW_64_bit-Profile
+
+
+ true
+ QtProjectManager.QMakeBuildStep
+ false
+
+
+
+ true
+ Qt4ProjectManager.MakeStep
+
+ 2
+ Build
+ Build
+ ProjectExplorer.BuildSteps.Build
+
+
+
+ true
+ Qt4ProjectManager.MakeStep
+ clean
+
+ 1
+ Clean
+ Clean
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ false
+
+ Profile
+ Qt4ProjectManager.Qt4BuildConfiguration
+ 0
+ 0
+ 0
+
+ 3
+
+
+ 0
+ Deploy
+ Deploy
+ ProjectExplorer.BuildSteps.Deploy
+
+ 1
+
+ false
+ ProjectExplorer.DefaultDeployConfiguration
+
+ 1
+
+ true
+ true
+ true
+
+ 2
+
+ Qt4ProjectManager.Qt4RunConfiguration:C:/Users/wsy/Desktop/chat/client-qt/chat_room_client.pro
+ C:/Users/wsy/Desktop/chat/client-qt/chat_room_client.pro
+ false
+ true
+ true
+ false
+ true
+ C:/Users/wsy/Desktop/chat/build-chat_room_client-Desktop_Qt_5_15_2_MinGW_64_bit-Release
+
+ 1
+
+
+
+ ProjectExplorer.Project.TargetCount
+ 1
+
+
+ ProjectExplorer.Project.Updater.FileVersion
+ 22
+
+
+ Version
+ 22
+
+
diff --git a/client-qt/chat_room_client.pro.user.605aaa8.22 b/client-qt/chat_room_client.pro.user.605aaa8.22
new file mode 100644
index 0000000..c3266ae
--- /dev/null
+++ b/client-qt/chat_room_client.pro.user.605aaa8.22
@@ -0,0 +1,263 @@
+
+
+
+
+
+ EnvironmentId
+ {605aaa82-b623-4a6f-9ab0-0f749bc8e8e8}
+
+
+ ProjectExplorer.Project.ActiveTarget
+ 0
+
+
+ ProjectExplorer.Project.EditorSettings
+
+ true
+ false
+ true
+
+ Cpp
+
+ CppGlobal
+
+
+
+ QmlJS
+
+ QmlJSGlobal
+
+
+ 2
+ UTF-8
+ false
+ 4
+ false
+ 80
+ true
+ true
+ 1
+ false
+ true
+ false
+ 0
+ true
+ true
+ 0
+ 8
+ true
+ false
+ 1
+ true
+ true
+ true
+ *.md, *.MD, Makefile
+ false
+ true
+ true
+
+
+
+ ProjectExplorer.Project.PluginSettings
+
+
+ true
+ false
+ true
+ true
+ true
+ true
+
+
+ 0
+ true
+
+ true
+ true
+ Builtin.DefaultTidyAndClazy
+ 2
+
+
+
+ true
+
+
+
+
+ ProjectExplorer.Project.Target.0
+
+ Desktop
+ Desktop Qt 6.4.3 GCC 64bit
+ Desktop Qt 6.4.3 GCC 64bit
+ qt.qt6.643.gcc_64_kit
+ 0
+ 0
+ 0
+
+ 0
+ /home/ryan/1code/chat_room-master/build-chat_room_client-Desktop_Qt_6_4_3_GCC_64bit-Debug
+ /home/ryan/1code/chat_room-master/build-chat_room_client-Desktop_Qt_6_4_3_GCC_64bit-Debug
+
+
+ true
+ QtProjectManager.QMakeBuildStep
+ false
+
+
+
+ true
+ Qt4ProjectManager.MakeStep
+
+ 2
+ 构建
+ 构建
+ ProjectExplorer.BuildSteps.Build
+
+
+
+ true
+ Qt4ProjectManager.MakeStep
+ clean
+
+ 1
+ 清除
+ 清除
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ false
+
+ Debug
+ Qt4ProjectManager.Qt4BuildConfiguration
+ 2
+
+
+ /home/ryan/1code/chat_room-master/build-chat_room_client-Desktop_Qt_6_4_3_GCC_64bit-Release
+ /home/ryan/1code/chat_room-master/build-chat_room_client-Desktop_Qt_6_4_3_GCC_64bit-Release
+
+
+ true
+ QtProjectManager.QMakeBuildStep
+ false
+
+
+
+ true
+ Qt4ProjectManager.MakeStep
+
+ 2
+ 构建
+ 构建
+ ProjectExplorer.BuildSteps.Build
+
+
+
+ true
+ Qt4ProjectManager.MakeStep
+ clean
+
+ 1
+ 清除
+ 清除
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ false
+
+ Release
+ Qt4ProjectManager.Qt4BuildConfiguration
+ 0
+ 0
+
+
+ 0
+ /home/ryan/1code/chat_room-master/build-chat_room_client-Desktop_Qt_6_4_3_GCC_64bit-Profile
+ /home/ryan/1code/chat_room-master/build-chat_room_client-Desktop_Qt_6_4_3_GCC_64bit-Profile
+
+
+ true
+ QtProjectManager.QMakeBuildStep
+ false
+
+
+
+ true
+ Qt4ProjectManager.MakeStep
+
+ 2
+ 构建
+ 构建
+ ProjectExplorer.BuildSteps.Build
+
+
+
+ true
+ Qt4ProjectManager.MakeStep
+ clean
+
+ 1
+ 清除
+ 清除
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ false
+
+ Profile
+ Qt4ProjectManager.Qt4BuildConfiguration
+ 0
+ 0
+ 0
+
+ 3
+
+
+ 0
+ 部署
+ 部署
+ ProjectExplorer.BuildSteps.Deploy
+
+ 1
+
+ false
+ ProjectExplorer.DefaultDeployConfiguration
+
+ 1
+
+ true
+ true
+ true
+
+ 2
+
+ Qt4ProjectManager.Qt4RunConfiguration:/home/ryan/1code/chat_room-master/client-qt/chat_room_client.pro
+ /home/ryan/1code/chat_room-master/client-qt/chat_room_client.pro
+ false
+ true
+ true
+ false
+ true
+ /home/ryan/1code/chat_room-master/build-chat_room_client-Desktop_Qt_6_4_3_GCC_64bit-Debug
+
+ 1
+
+
+
+ ProjectExplorer.Project.TargetCount
+ 1
+
+
+ ProjectExplorer.Project.Updater.FileVersion
+ 22
+
+
+ Version
+ 22
+
+
diff --git a/client-qt/chat_room_client.pro.user.8d58143.4.9-pre1 b/client-qt/chat_room_client.pro.user.8d58143.4.9-pre1
new file mode 100644
index 0000000..d5dc83f
--- /dev/null
+++ b/client-qt/chat_room_client.pro.user.8d58143.4.9-pre1
@@ -0,0 +1,328 @@
+
+
+
+
+
+ EnvironmentId
+ {8d58143c-3cf3-4699-bc9b-6c3c945066cd}
+
+
+ ProjectExplorer.Project.ActiveTarget
+ 0
+
+
+ ProjectExplorer.Project.EditorSettings
+
+ true
+ false
+ true
+
+ Cpp
+
+ CppGlobal
+
+
+
+ QmlJS
+
+ QmlJSGlobal
+
+
+ 2
+ UTF-8
+ false
+ 4
+ false
+ 80
+ true
+ true
+ 1
+ true
+ false
+ 0
+ true
+ true
+ 0
+ 8
+ true
+ 2
+ true
+ true
+ true
+ false
+
+
+
+ ProjectExplorer.Project.PluginSettings
+
+
+ -fno-delayed-template-parsing
+
+ true
+
+
+
+ ProjectExplorer.Project.Target.0
+
+ Desktop Qt 5.12.2 MinGW 64-bit
+ Desktop Qt 5.12.2 MinGW 64-bit
+ qt.qt5.5122.win64_mingw73_kit
+ 0
+ 0
+ 0
+
+ C:/Users/Lenovo/Desktop/chat_room-master/build-chat_room_client-Desktop_Qt_5_12_2_MinGW_64_bit-Debug
+
+
+ true
+ qmake
+
+ QtProjectManager.QMakeBuildStep
+ true
+
+ false
+ false
+ false
+
+
+ true
+ Make
+
+ Qt4ProjectManager.MakeStep
+
+ false
+
+
+ false
+
+ 2
+ Build
+
+ ProjectExplorer.BuildSteps.Build
+
+
+
+ true
+ Make
+
+ Qt4ProjectManager.MakeStep
+
+ true
+ clean
+
+ false
+
+ 1
+ Clean
+
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ Debug
+ Debug
+ Qt4ProjectManager.Qt4BuildConfiguration
+ 2
+ true
+
+
+ C:/Users/Lenovo/Desktop/chat_room-master/build-chat_room_client-Desktop_Qt_5_12_2_MinGW_64_bit-Release
+
+
+ true
+ qmake
+
+ QtProjectManager.QMakeBuildStep
+ false
+
+ false
+ false
+ true
+
+
+ true
+ Make
+
+ Qt4ProjectManager.MakeStep
+
+ false
+
+
+ false
+
+ 2
+ Build
+
+ ProjectExplorer.BuildSteps.Build
+
+
+
+ true
+ Make
+
+ Qt4ProjectManager.MakeStep
+
+ true
+ clean
+
+ false
+
+ 1
+ Clean
+
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ Release
+ Release
+ Qt4ProjectManager.Qt4BuildConfiguration
+ 0
+ true
+
+
+ C:/Users/Lenovo/Desktop/chat_room-master/build-chat_room_client-Desktop_Qt_5_12_2_MinGW_64_bit-Profile
+
+
+ true
+ qmake
+
+ QtProjectManager.QMakeBuildStep
+ true
+
+ false
+ true
+ true
+
+
+ true
+ Make
+
+ Qt4ProjectManager.MakeStep
+
+ false
+
+
+ false
+
+ 2
+ Build
+
+ ProjectExplorer.BuildSteps.Build
+
+
+
+ true
+ Make
+
+ Qt4ProjectManager.MakeStep
+
+ true
+ clean
+
+ false
+
+ 1
+ Clean
+
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ Profile
+ Profile
+ Qt4ProjectManager.Qt4BuildConfiguration
+ 0
+ true
+
+ 3
+
+
+ 0
+ 部署
+
+ ProjectExplorer.BuildSteps.Deploy
+
+ 1
+ Deploy Configuration
+
+ ProjectExplorer.DefaultDeployConfiguration
+
+ 1
+
+
+ false
+ false
+ 1000
+
+ true
+
+ false
+ false
+ false
+ false
+ true
+ 0.01
+ 10
+ true
+ 1
+ 25
+
+ 1
+ true
+ false
+ true
+ valgrind
+
+ 0
+ 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+ 10
+ 11
+ 12
+ 13
+ 14
+
+ 2
+
+ chat_room_client
+
+ Qt4ProjectManager.Qt4RunConfiguration:C:/Users/Lenovo/Desktop/chat_room-master/client-qt/chat_room_client.pro
+ chat_room_client.pro
+
+ 3768
+ false
+ true
+ true
+ false
+ false
+ true
+
+
+
+ 1
+
+
+
+ ProjectExplorer.Project.TargetCount
+ 1
+
+
+ ProjectExplorer.Project.Updater.FileVersion
+ 20
+
+
+ Version
+ 20
+
+
diff --git a/client-qt/chatinfomanage.cpp b/client-qt/chatinfomanage.cpp
new file mode 100644
index 0000000..cbbeaa4
--- /dev/null
+++ b/client-qt/chatinfomanage.cpp
@@ -0,0 +1,112 @@
+#include "chatinfomanage.h"
+
+ChatInfoManage* ChatInfoManage::m_pInstance = m_pInstance;
+
+ChatInfoManage::ChatInfoManage()
+{
+
+}
+
+GroupUserInfo *ChatInfoManage::getUserInfo(int account)
+{
+ GroupUserInfo* userInfo =NULL;
+ mapGroupInfo::iterator iter = g_GroupUserInfoMap.find(0);
+ if(iter!=g_GroupUserInfoMap.end()){
+ mapGroupUserInfo::iterator ite = iter->second.find(account);
+ ChatLogInfo()<<"### size:"<second.size();
+ if(ite!=iter->second.end()){
+ userInfo = ite->second;
+ ChatLogInfo()<< "account:" << userInfo->m_account <<",username:" << QString(userInfo->m_userName);
+ return userInfo;
+ }
+ else{
+ ChatLogInfo()<<"find UserInfo fail..";
+ }
+ }
+ else {
+ ChatLogInfo()<<"not find group 0..";
+ }
+ return userInfo;
+}
+
+int ChatInfoManage::addGroupChatInfo(GroupChatInfo *pGroupChatInfo)
+{
+ std::pair InsertPair = g_GroupCharInfoMap.insert(std::make_pair(pGroupChatInfo->m_account,pGroupChatInfo));
+ if(InsertPair.second == true)
+ return 0;
+ return -1;
+}
+
+GroupChatInfo *ChatInfoManage::getGroupChatInfo(int groupAccount)
+{
+ GroupChatInfo* groupChatInfo = NULL;
+ mapGroupChatInfo::iterator iter = g_GroupCharInfoMap.find(groupAccount);
+ if(iter!=g_GroupCharInfoMap.end()){
+ groupChatInfo = iter->second;
+ }
+ else {
+ ChatLogInfo()<<"not find chatgroup indo";
+ return NULL;
+ }
+ return groupChatInfo;
+}
+
+int ChatInfoManage::addGroupUserInfo(int groupAccount, GroupUserInfo *groupUserInfo)
+{
+ //将群用户信息添加到群里面
+ mapGroupInfo::iterator iter = g_GroupUserInfoMap.find(groupAccount);
+ if(iter != g_GroupUserInfoMap.end()){
+ std::pair InsertPair = iter->second.insert(std::make_pair(groupUserInfo->m_account,groupUserInfo));
+ if(InsertPair.second == true)
+ return 0;
+ else {
+ ChatLogInfo()<<"insert groupAccount:"< insertPair = groupUserInfoMap.insert(std::make_pair(groupUserInfo->m_account,groupUserInfo));
+ if(insertPair.second != true)
+ return -1;
+ std::pair InsertPair = g_GroupUserInfoMap.insert(std::make_pair(groupAccount,groupUserInfoMap));
+ if(InsertPair.second == true)
+ return 0;
+ }
+ return -1;
+}
+
+GroupUserInfo *ChatInfoManage::getGroupUserInfo(int groupAccount, int userAccount)
+{
+ GroupUserInfo* groupUserInfo =NULL;
+ mapGroupInfo::iterator iter = g_GroupUserInfoMap.find(groupAccount);
+ if(iter!=g_GroupUserInfoMap.end()){
+ mapGroupUserInfo::iterator ite = iter->second.find(userAccount);
+ if(ite!=iter->second.end()){
+ groupUserInfo = ite->second;
+ }
+ }
+ return groupUserInfo;
+}
+
+int ChatInfoManage::addFriendInfo(FriendInfo *friendInfo)
+{
+ std::pair InsertPair = m_FriendInfoMap.insert(std::make_pair(friendInfo->m_account,friendInfo));
+ if(InsertPair.second == true)
+ return 0;
+ return -1;
+}
+
+FriendInfo *ChatInfoManage::getFriendInfo(int account)
+{
+ FriendInfo* friendInfo = NULL;
+ mapFriendInfo::iterator iter = m_FriendInfoMap.find(account);
+ if(iter!=m_FriendInfoMap.end()){
+ friendInfo = iter->second;
+ }
+ else {
+ ChatLogInfo()<<"not find chatgroup indo";
+ return NULL;
+ }
+ return friendInfo;
+}
diff --git a/client-qt/chatinfomanage.h b/client-qt/chatinfomanage.h
new file mode 100644
index 0000000..3fd0088
--- /dev/null
+++ b/client-qt/chatinfomanage.h
@@ -0,0 +1,148 @@
+#ifndef CHATINFOMANAGE_H
+#define CHATINFOMANAGE_H
+#include "common.h"
+#include