一.客户端发送

用MFC可视化做个客户端登录界面。

聊天室(C++客户端+Pyhton服务器)_1.框架搭设

 聊天室(C++客户端+Pyhton服务器)_1.框架搭设

聊天室(C++客户端+Pyhton服务器)_1.框架搭设

聊天室(C++客户端+Pyhton服务器)_1.框架搭设

 

聊天室(C++客户端+Pyhton服务器)_1.框架搭设

 

 

 

 

聊天室(C++客户端+Pyhton服务器)_1.框架搭设

 

聊天室(C++客户端+Pyhton服务器)_1.框架搭设

先点击注册账号按钮,注册账号的时候就需要连接到服务器,

服务器需要查数据库,并做出相应的回应。

所以开始写C++客户端套接口类用来连接到服务器。

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)))

相关文章:

  • 2021-05-25
  • 2022-01-18
  • 2022-01-14
  • 2022-02-08
  • 2021-11-07
  • 2021-11-07
  • 2021-08-07
  • 2022-12-23
猜你喜欢
  • 2022-02-10
  • 2022-01-17
  • 2021-06-24
  • 2021-07-22
  • 2021-06-22
  • 2021-06-23
相关资源
相似解决方案