📄 myfunctions.h
字号:
/*******************************************************************************
* 文件名称:myFunction.cpp
* 摘 要:自定义的一些函数
* 单 位:软件学院
* 作 者:姚旺
* 学 号:2120070369
* 完成日期:2007年11月8日
*******************************************************************************/
/******************
* 定义常量:
******************/
#define IPTOSBUFFERS 12
namespace ArpWinPcap {
using namespace System;
/******************************
*摘自范例的转换值时用的函数
*****************************/
char *iptos(u_long in)
{
static char output[IPTOSBUFFERS][3*4+3+1];
static short which;
u_char *p;
p = (u_char *)∈
which = (which + 1 == IPTOSBUFFERS ? 0 : which + 1);
sprintf(output[which], "%d.%d.%d.%d", p[0], p[1], p[2], p[3]);
return output[which];
}
/******************************
*摘自范例的转换值时用的函数
*****************************/
char* ip6tos(struct sockaddr *sockaddr, char *address, int addrlen)
{
socklen_t sockaddrlen;
#ifdef WIN32
sockaddrlen = sizeof(struct sockaddr_in6);
#else
sockaddrlen = sizeof(struct sockaddr_storage);
#endif
if(getnameinfo(sockaddr,
sockaddrlen,
address,
addrlen,
NULL,
0,
NI_NUMERICHOST) != 0) address = NULL;
return address;
}
/**************************************************************************
* 本函数功能:分析用户输入的IP地址的合法性
* 输入参数:
* strIPAddr: 用户输入的IP地址
* 输出变量:
* bool: 指示是否合法
*************************************************************************/
bool fnAnalyzeIP(System::String ^strIPAddr)
{
array<System::String ^>^ strTmp={"."};
unsigned char cTmp[4];
strTmp=strIPAddr->Split(strTmp,System::StringSplitOptions::None);
if(strTmp->Length!=4)
return false;
for(int i=0;i<4;i++)
{
try
{
System::Convert::ToByte(strTmp[i]);
}
catch(System::Exception^ e)
{
return false;
}
}
return true;
}
/**************************************************************************
* 本函数功能:比较两IP地址大小
* 输入参数:
* strFir: 第一个IP地址
* strSec: 第二个IP地址
* 输出变量:
* bool: 指示是否第一个大于等于第二个
*************************************************************************/
bool fnCompareNotLess(System::String ^strFir,System::String ^strSec)
{
array<System::String ^>^ strTmp1={"."};
array<System::String ^>^ strTmp2={"."};
array<System::Byte,2>^ cTmp=gcnew array<System::Byte,2>(2,4);
array<System::UInt32>^ iTmp=gcnew array<System::UInt32>(2);
strTmp1=strFir->Split(strTmp1,System::StringSplitOptions::None);
strTmp2=strSec->Split(strTmp2,System::StringSplitOptions::None);
for(int i=0,j=3;i<4;i++,j--)
{
cTmp[0,i]=System::Convert::ToByte(strTmp1[i]);
cTmp[1,i]=System::Convert::ToByte(strTmp2[i]);
iTmp[0]+=Convert::ToUInt32(cTmp[0,i])*Convert::ToUInt32(System::Math::Pow(256.0,(double)j));
iTmp[1]+=Convert::ToUInt32(cTmp[1,i])*Convert::ToUInt32(System::Math::Pow(256.0,(double)j));
}
if(iTmp[0]>=iTmp[1])
return true;
else
return false;
}
/**************************************************************************
* 本函数功能:使IP加一
* 输入参数:
* strIPAddr: IP地址
* 输出变量:
* String: 加一后的IP地址
*************************************************************************/
System::String ^fnIncreIP(String ^strIPAddr)
{
array<System::String^>^ strTmp={"."};
array<int>^ iIPAddr=gcnew array<int>(4);
strTmp=strIPAddr->Split(strTmp,System::StringSplitOptions::RemoveEmptyEntries);
bool bCarry=true;
for(int i=3;i>=0;i--)
{
iIPAddr[i]=Convert::ToInt32(strTmp[i]);
if(bCarry)
{
iIPAddr[i]++;
if(iIPAddr[i]==256)
iIPAddr[i]=0;
else
bCarry=false;
}
}
return String::Format("{0}.{1}.{2}.{3}",iIPAddr[0],iIPAddr[1],iIPAddr[2],iIPAddr[3]);
}
/******************************************************
* 本函数用来在人为错误等非程序错误情况时弹出错误信息:
*****************************************************/
System::Void fnErrorMsg(String ^strDescription)
{
System::Windows::Forms::MessageBox::Show(strDescription,"错误");
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -