//注意在程序Link中加入Ws2_32.lib
//采用win32 Dynamic—Link Library
***DLL.h文件
#ifndef _ACEDLL_H_
#define _ACEDLL_H_
#if defined DLL_EXPORT
#define DECLDIR __declspec(dllexport)
#else
#define DECLDIR __declspec(dllimport)
#endif
extern "C"
{
DECLDIR bool Auth(char UID[20],char PW[25],char *ServIP,int ServPort);
DECLDIR void fun(void);
}
#endif
//*****dll.cpp
#include
#include
#include
//#include
#include
#include
#define DLL_EXPORT
#include "AceDll.h"
WORD wVersionRequested;
WSADATA wsaData;
int err;
extern "C"
{
DECLDIR bool Auth(char *UID,char *PW,char *ServIP,int ServPort)
{
if(!strcmp(UID,"dudahai"))
{
cout<
wVersionRequested = MAKEWORD(1,1);
err=WSAStartup(wVersionRequested,&wsaData);
if(err!=0)
{
return false;
}
if(LOBYTE(wsaData.wVersion)!=1 ||
HIBYTE(wsaData.wVersion)!=1)
{
WSACleanup();
return false;
}
SOCKET sockClient=socket(AF_INET,SOCK_DGRAM,0);
SOCKADDR_IN addrSrv;
addrSrv.sin_addr.S_un.S_addr=inet_addr(ServIP);
//addrSrv.sin_addr.S_un.S_addr=inet_addr("192.168.0.68");
addrSrv.sin_family=AF_INET;
addrSrv.sin_port=htons(ServPort);
sendto(sockClient,"Hello",strlen("Hello")+1,0,
(SOCKADDR *)&addrSrv,sizeof(SOCKADDR));
closesocket(sockClient);
WSACleanup();
cout<
return true;
}
else
return false;
}
DECLDIR void fun()
{
cout<
}
}
//调用dll的方法
//在客户端程序中加入***Dll.h
//在link中加入相应的***dll.lib
#include "MyDllTest.h"
#include
#include "AceDll.h"
int main()
{
if(Auth("dudahai","123456","192.168.0.27",80))
cout<
return 0;
}
//服务器端UDP接收程序,用作测试
#include
#include
void main()
{
WORD wVersionRequested;
WSADATA wsaData;
int err;
char c;
wVersionRequested = MAKEWORD(1,1);
err=WSAStartup(wVersionRequested,&wsaData);
if(err!=0)
{
return ;
}
if(LOBYTE(wsaData.wVersion)!=1 ||
HIBYTE(wsaData.wVersion)!=1)
{
WSACleanup();
return ;
}
SOCKET sockSrv=socket(AF_INET,SOCK_DGRAM,0);
SOCKADDR_IN addrSrv;
addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
addrSrv.sin_family=AF_INET;
addrSrv.sin_port=htons(80);
bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));
SOCKADDR_IN addrClient;
int len=sizeof(SOCKADDR);
char recvBuf[100];
recvfrom(sockSrv,recvBuf,100,0,(SOCKADDR*)&addrClient,&len);
printf("%s\n",recvBuf);
closesocket(sockSrv);
WSACleanup();
scanf("%c",&c);
}