原创文章,欢迎转载。转载请注明:转载自 祥的博客
原文链接:http://blog.csdn.net/humanking7/article/details/50726271
大家可能因为这样那样的原因,要将源代码封装为动态链接库(DLL)或静态链接库(Lib)。
将你的类的声明和实现分离,h文件中只是类的声明
,cpp文件是类的实现
我这个类是封装好了UDP。
#ifndef _QFX_CLASS_UDP_H
#define _QFX_CLASS_UDP_H
#include <WinSock2.h>
#pragma comment(lib,"ws2_32.lib")
//UDP Class write by Qfx 2016.2.9
//The code based on the Winsocket
//*********************************************************************************************************
//Part1.
//自定义UDP类接收和发送数据类型
//*********************************************************************************************************
//IPandPort
//该结构体用于存放IP地址和端口号
struct IPandPort
{
char IP[20];
unsigned short Port;
};
//Receive Data Pack
//用于存放接收数据,使用union是便于接收和获取对应的数据
union DataReceive
{
char Buf[128];
struct DataDetail
{
double Test0_double;
UINT8 Test1_u8;
UINT8 Test2_u8[32];
double Test3_double;
}data;
};
//Receive Data Pack
//用于打包发送数据,使用union是便于接收和获取对应的数据
union DataSend
{
char Buf[128];
struct DataDetail
{
double Test0_double;
UINT8 Test1_u8;
UINT8 Test2_u8[32];
double Test3_double;
}data;
};
//*********************************************************************************************************
//Part2.
//Class Declaration我的UDP类的声明
//*********************************************************************************************************
class QfxUDP
{
private:
WSADATA m_wsaData;
SOCKET m_HostSocket;//本机对应Socket
public:
char m_HostIP[20];//本机绑定的IP地址
unsigned short m_HostPort; //本机绑定的端口号
char m_FromIP[20];//对方的IP地址
unsigned short m_FromPort;//对方的端口号
public:
//************************************
// Method: 初始化套接字
// FullName: InitSocket
// Access: public
// Returns: BOOL [->] if success return "True", if fail return "False"
// Qualifier:
// Parameter: unsigned short Port [->] Host Port for receive
//************************************
BOOL InitSocket(unsigned short Port);
//************************************
// Method: 获取本地IP地址
// FullName: GetHostIP
// Access: public
// Returns: BOOL [->] if success return TRUE. Otherwise return FALSE
// Qualifier:
// Parameter: char * HostIP [->] Host IP
//************************************
BOOL GetHostIP(char* HostIP);
//************************************
// Method: 关闭套接字
// FullName: DeletSocket
// Access: public
// Returns: BOOL
// Qualifier:
//************************************
BOOL DeletSocket(void);
//************************************
// Method: UDP发送函数
// FullName: UDP_Send
// Access: public
// Returns: void
// Qualifier:
// Parameter: char * IP [->] 目标IP地址
// Parameter: int Port [->] 目标端口号
// Parameter: char * buf [->] 发送的数据
// Parameter: int len [->] 发送的数据长度
// Parameter: int flags [->] Indicator specifying the way in which the call is made
//************************************
void UDP_Send( char* IP, unsigned short Port, char* buf, int len, int flags = 0);
//************************************
// Method: UDP接收函数
// FullName: UDP_Rece
// Access: public
// Returns: int [->] 成功后,返回接到的数据大小
// Qualifier:
// Parameter: char * buf [->] 接收数据存储的地址
// Parameter: int len [->] 接收数据的大小
// Parameter: int flags [->] Indicator specifying the way in which the call is made
//************************************
int UDP_Rece( char* buf, int len, int flags = 0);
};
#endif
#include <iostream>
using namespace std;
#include "QfxClassUDP.h"
BOOL QfxUDP::GetHostIP( char* HostIP )
{
//代码实现
}
BOOL QfxUDP::InitSocket( unsigned short Port )
{
//代码实现
}
BOOL QfxUDP::DeletSocket( void )
{
//代码实现
}
void QfxUDP::UDP_Send( char* IP, unsigned short Port, char* buf, int len, int flags /*= 0*/ )
{
//代码实现
}
int QfxUDP::UDP_Rece( char* buf, int len, int flags /*= 0*/ )
{
//代码实现
}
两种方法
代码如下:
#include <iostream>
using namespace std;
//包含库的头文件
#include "QfxClassUDP.h"
//添加lib库
#pragma comment(lib,"ClassLibrary.lib")
···
···