标签:反馈 except image ons 保存 结果 需要 use 释放
先点击注册账号按钮,注册账号的时候就需要连接到服务器,
服务器需要查数据库,并做出相应的回应。
demosocket.cpp文件
#include "pch.h"#include <WS2tcpip.h>#include "DemoSocket.h"??// 构造函数,用于执行初始化和套接字的创建DemoSocket::DemoSocket(){ // 0. 使用必须的结构体 WSAData WsaData = { 0 };? // 1. 初始化网络环境并请求指定版本 if (WSAStartup(MAKEWORD(2, 2), &WsaData)) { MessageBox(NULL, L"网络环境初始化失败!", L"错误", MB_OK | MB_ICONERROR); ExitProcess(0); }? // 2. 判断版本信息是否匹配 if (MAKEWORD(2,2) != WsaData.wVersion) { MessageBox(NULL, L"套接字版本不匹配!", L"错误", MB_OK | MB_ICONERROR); ExitProcess(0); }? // 3. 创建一个套接字 ClientSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if (ClientSocket == INVALID_SOCKET) { MessageBox(NULL, L"创建套接字失败!", L"错误", MB_OK | MB_ICONERROR); ExitProcess(0); }}??// 析构函数,主要用于清理网络环境和释放套接字DemoSocket::~DemoSocket(){ // 清理网络环境和释放套接字 closesocket(ClientSocket); WSACleanup();? // 结束接收线程并关闭内核对象句柄}??// 用于设置对应的主窗口void DemoSocket::SetMainWnd(CDialogEx* MainDialog){ // 主窗口对象主要用于获取主窗口的句柄,并发送数据 this->MainWnd = MainDialog;}??// 用于连接到对应的服务器void DemoSocket::Connect(LPCSTR Ip, u_short Port){ // 1. 使用传入的 Ip 和 Port 填充结构体 sockaddr_in ServerAddr = { AF_INET }; ServerAddr.sin_port = htons(Port); inet_pton(AF_INET, Ip, &ServerAddr.sin_addr);? // 2. 调用 connect 连接到服务器 if (SOCKET_ERROR == connect(ClientSocket, (sockaddr*)& ServerAddr, sizeof(ServerAddr))) {