⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ipclass.cpp

📁 vc++6.0开发网络典型应用实例导航 1. 本光盘提供了本书中所有的实例源程序文件。 2. 附录文件夹下是Winsock 函数参考以及错误码列表
💻 CPP
字号:
// Ipclass.cpp: implementation of the __IP__ class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "Netmsg.h"
#include "Ipclass.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//The class I use for transfering IP addresses around

void IP::Set(char *ip)
{
	char ipbuf[16];
	if (strlen(ip) > 15 ||
	!strchr(strchr(strchr(ip, '.') + 1, '.') + 1, '.'))
	{
		seg1 = 0;
		seg2 = 0; 
		seg3 = 0; 
		seg4 = 0; 
	}
	else
	{
		strcpy(ipbuf, ip);
		seg1 = atoi(strtok(ipbuf, "."));
		seg2 = atoi(strtok(NULL, "."));
		seg3 = atoi(strtok(NULL, "."));
		seg4 = atoi(strtok(NULL, ""));
	}
	if (seg1 > 0xFF || seg2 > 0xFF || seg3 > 0xFF || seg4 > 0xFF)
	{
		seg1 = 0; 
		seg2 = 0; 
		seg3 = 0; 
		seg4 = 0;
	}
}

CString IP::Get()
{
	CString ret;
	ret.Format("%d.%d.%d.%d", seg1, seg2, seg3, seg4);
	return ret;
}

bool IP:: operator == (IP &ip)
{
	if (seg1 == ip.seg1 && seg2 == ip.seg2 &&
		seg3 == ip.seg3 && seg4 == ip.seg4)
		return true;
	return false;
}

IP::IP(unsigned char s1, unsigned char s2, unsigned char s3, unsigned char s4)
{
	seg1 = s1;
	seg2 = s2;
	seg3 = s3;
	seg4 = s4;
}

IP::IP(IP &ip)
{
	seg1 = ip.seg1;
	seg2 = ip.seg2;
	seg3 = ip.seg3;
	seg4 = ip.seg4;
}

IP::IP(char *ip)
{
	Set(ip);
}

IP::IP(CString ip)
{
	if (ip.GetLength() > 16) return;
	char Ip[16];
	strcpy(Ip, ip);
	Set(Ip);
}

IP::IP()
{
	seg1 = 0;
	seg2 = 0;
	seg3 = 0;
	seg4 = 0;
}

IP::~IP()
{

}

unsigned long IP::GetLongIP()
{
	return (unsigned long) (seg4 | seg3 << 8 | seg2 << 16 | seg1 << 24);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -