日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

【Android 逆向】Android 逆向通用工具开发 ( 网络模块开发 | 配置头文件 | 配置编译参数 | 网络初始化 WSAStartup 与清理 WSACleanup 操作 )

發(fā)布時間:2025/6/17 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Android 逆向】Android 逆向通用工具开发 ( 网络模块开发 | 配置头文件 | 配置编译参数 | 网络初始化 WSAStartup 与清理 WSACleanup 操作 ) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

  • 前言
  • 一、開發(fā)前的配置 ( 頭文件 | 編譯參數(shù)設(shè)置 )
  • 二、網(wǎng)絡(luò)初始化 WSAStartup 與清理 WSACleanup 操作

前言

本篇博客重點分析 CNetwork 網(wǎng)絡(luò)模塊 ;





一、開發(fā)前的配置 ( 頭文件 | 編譯參數(shù)設(shè)置 )



Windows 中引入網(wǎng)絡(luò)套接字頭文件注意事項 : 必須先引入 WinSock2.h 頭文件 , 然后 再引入 Windows.h 頭文件 , 否則會報錯 ;

#include <WinSock2.h> // WinSock2.h 頭文件 必須在 Windows.h 頭文件前面 #include <Windows.h> // Windows.h 頭文件 必須在 WinSock2.h 頭文件后面

使用代碼 記錄 編譯參數(shù)選項 :

#pragma warning(disable:4996) #pragma comment(lib,"Ws2_32.lib")

格式風(fēng)格宏定義 :

#define FORMAT_STYLE (FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS)



二、網(wǎng)絡(luò)初始化 WSAStartup 與清理 WSACleanup 操作



在 CNetwork 中 , 定義了一個 WSAPrepare 私有類 ,

在 Windows 中調(diào)用網(wǎng)絡(luò)功能 , 必須執(zhí)行 WSAStartup 初始化函數(shù) , 否則無法使用網(wǎng)絡(luò)功能 ; 使用完畢后 , 一定要執(zhí)行 WSACleanup 函數(shù) , 否則之后的網(wǎng)絡(luò)操作都會受到影響 ;

上述初始化網(wǎng)絡(luò) , 清理網(wǎng)絡(luò) 操作 , 在使用前初始化 , 使用完畢后清理 ;

使用過程中 , 會創(chuàng)建多個 CNetwork 對象 , 只需要在第一個對象創(chuàng)建前初始化 , 最后一個對象析構(gòu)后清理即可 ;

沒有必要在每個對象中都 執(zhí)行 網(wǎng)絡(luò)的初始化 與 清理操作 ; 因此 WSAPrepare 變量被定義成私有靜態(tài)變量 ;

在 CNetwork.cpp 中聲明了 CNetwork::WSAPrepare CNetwork::wsaforwin; , 確保網(wǎng)絡(luò)一定會被初始化 , 初始化和析構(gòu)時 , 不影響網(wǎng)絡(luò)功能的使用 ;


CNetwork.h 源碼 :

#pragma once#include <WinSock2.h> // WinSock2.h 頭文件 必須在 Windows.h 頭文件前面 #include <Windows.h> // Windows.h 頭文件 必須在 WinSock2.h 頭文件后面#include <SDKDDKVer.h> #include <afxwin.h>#include <stdio.h> #include "../Json/json.h" enum {CMD_READ_DATA = 1,CMD_WRITE_GOLD,CMD_WRITE_EXP };#pragma warning(disable:4996) #pragma comment(lib,"Ws2_32.lib") #define FORMAT_STYLE (FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS) class CNetwork { public:CNetwork();~CNetwork();bool WaitClientOnline();//等待客戶端上線bool ReadData(Json::Value& root);//讀取數(shù)據(jù)bool WriteGold(double gold);//修改金幣bool WriteExp(unsigned exp);//修改經(jīng)驗 public:static CString GetErrorString(); private:SOCKET m_server; private:/* 該私有類的作用是用于整體的網(wǎng)絡(luò)初始化在 Windows 中調(diào)用網(wǎng)絡(luò)功能 , 必須執(zhí)行 WSAStartup 初始化函數(shù) , 否則無法使用網(wǎng)絡(luò)功能使用完畢后 , 一定要執(zhí)行 WSACleanup 函數(shù) , 否則之后的網(wǎng)絡(luò)操作都會受到影響上述初始化網(wǎng)絡(luò) , 清理網(wǎng)絡(luò) 操作 , 在使用前初始化 , 使用完畢后清理 ; 使用過程中 , 會創(chuàng)建多個 CNetwork 對象 , 只需要在第一個對象創(chuàng)建前初始化 , 最后一個對象析構(gòu)后清理即可 ; 沒有必要在每個對象中都 執(zhí)行 網(wǎng)絡(luò)的初始化 與 清理操作 ; 因此 WSAPrepare 變量被定義成私有靜態(tài)變量在 CNetwork 中聲明了 CNetwork::WSAPrepare CNetwork::wsaforwin;確保網(wǎng)絡(luò)一定會被初始化 , 初始化和析構(gòu)時 , 不影響網(wǎng)絡(luò)功能的使用*/class WSAPrepare {public:WSAPrepare() {WSADATA data;memset(&data, 0, sizeof(data));int ret = WSAStartup(MAKEWORD(2, 2), &data);if (ret < 0) {printf("網(wǎng)絡(luò)初始化失敗:%s\n", (LPCSTR)CNetwork::GetErrorString());(void)getchar();abort();}}~WSAPrepare() {if (WSACleanup() < 0) {printf("網(wǎng)絡(luò)關(guān)閉失敗:%s\n", (LPCSTR)CNetwork::GetErrorString());}}};/* 私有靜態(tài)成員變量 , 所有的 CNetwork 對象都共享同一個變量 */static WSAPrepare wsaforwin;};

總結(jié)

以上是生活随笔為你收集整理的【Android 逆向】Android 逆向通用工具开发 ( 网络模块开发 | 配置头文件 | 配置编译参数 | 网络初始化 WSAStartup 与清理 WSACleanup 操作 )的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。