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

📄 common.h

📁 这是和p2p相关的一份源码
💻 H
字号:
// ------------------------------------------------// File : common.h// Date: 4-apr-2002// Author: giles//// (c) 2002 peercast.org// ------------------------------------------------// This program is free software; you can redistribute it and/or modify// it under the terms of the GNU General Public License as published by// the Free Software Foundation; either version 2 of the License, or// (at your option) any later version.// This program is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the// GNU General Public License for more details.// ------------------------------------------------#ifndef _COMMON_H#define _COMMON_H#include <stdio.h>#include <string.h>#ifndef NULL#define NULL 0#endif// ----------------------------------class GeneralException{public:    GeneralException(const char *m, int e = 0) 	{		strcpy(msg,m);		err=e;	}    char msg[128];	int err;};// -------------------------------------class StreamException : public GeneralException{public:	StreamException(const char *m) : GeneralException(m) {}	StreamException(const char *m,int e) : GeneralException(m,e) {}};// ----------------------------------class SockException : public StreamException{public:    SockException(const char *m="Socket") : StreamException(m) {}    SockException(const char *m, int e) : StreamException(m,e) {}};// ----------------------------------class TimeoutException : public StreamException{public:    TimeoutException(const char *m="Timeout") : StreamException(m) {}};// --------------------------------class GnuID{public:	bool	isSame(GnuID &gid)	{		for(int i=0; i<16; i++)			if (gid.id[i] != id[i])				return false;		return true;	}	bool	isSet()	{		for(int i=0; i<16; i++)			if (id[i] != 0)				return true;		return false;	}	void	clear()	{		for(int i=0; i<16; i++)			id[i] = 0;		storeTime = 0;	}	void	generate();	void	encode(class Host *, const char *,const char *,unsigned char);	void	toStr(char *);	void	fromStr(const char *);	int 	getVersion();	unsigned char id[16];	unsigned int storeTime;};// ----------------------------------class Host{    inline unsigned int ip3()    {        return (ip>>24);    }    inline unsigned int ip2()    {        return (ip>>16)&0xff;    }    inline unsigned int ip1()    {        return (ip>>8)&0xff;    }    inline unsigned int ip0()    {        return ip&0xff;    }public:	Host(){init();}	Host(unsigned int i, unsigned short p)	{		ip = i;		port = p;		value = 0;	}	void	init()	{		ip = 0;		port = 0;		value = 0;	}	bool	isMemberOf(Host &);	bool	isSame(Host &h)	{		return (h.ip == ip) && (h.port == port);	}	bool	globalIP()	{#if 0		// local host		if ((ipByte[3] == 127) && (ipByte[2] == 0) && (ipByte[1] == 0) && (ipByte[0] == 1))			return false;		// class A		if (ipByte[3] == 10)			return false;		// class B		if ((ipByte[3] == 172) && (ipByte[2] >= 16) && (ipByte[2] <= 31))			return false;		// class C		if ((ipByte[3] == 192) && (ipByte[2] == 168))			return false;#else		// local host		if ((ip3() == 127) && (ip2() == 0) && (ip1() == 0) && (ip0() == 1))			return false;		// class A		if (ip3() == 10)			return false;		// class B		if ((ip3() == 172) && (ip2() >= 16) && (ip2() <= 31))			return false;		// class C		if ((ip3() == 192) && (ip2() == 168))			return false;#endif		return true;	}	bool	localIP()	{		return !globalIP();	}	bool	loopbackIP()	{//		return ((ipByte[3] == 127) && (ipByte[2] == 0) && (ipByte[1] == 0) && (ipByte[0] == 1));		return ((ip3() == 127) && (ip2() == 0) && (ip1() == 0) && (ip0() == 1));	}	bool	isValid()	{		return (ip != 0) && (port != 0);	}	bool	isSameType(Host &h)	{			return ( (globalIP() && h.globalIP()) ||			         (!globalIP() && !h.globalIP()) ); 	}	void	IPtoStr(char *str)	{		sprintf(str,"%d.%d.%d.%d",(ip>>24)&0xff,(ip>>16)&0xff,(ip>>8)&0xff,(ip)&0xff);	}	void	toStr(char *str)	{		sprintf(str,"%d.%d.%d.%d:%d",(ip>>24)&0xff,(ip>>16)&0xff,(ip>>8)&0xff,(ip)&0xff,port);	}	void	toResolvedName(char *);	void	fromStr(char *);	bool	isLocalhost();	union	{		unsigned int ip;//		unsigned char ipByte[4];	};    unsigned short port;	unsigned int value;};// ----------------------------------#define SWAP2(v) ( ((v&0xff)<<8) | ((v&0xff00)>>8) )#define SWAP4(v) (((v&0xff)<<24) | ((v&0xff00)<<8) | ((v&0xff0000)>>8) | ((v&0xff000000)>>24))#define TOUPPER(c) ((((c) >= 'a') && ((c) <= 'z')) ? (c)+'A'-'a' : (c))#define TONIBBLE(c) ((((c) >= 'A')&&((c) <= 'F')) ? (((c)-'A')+10) : ((c)-'0'))#define BYTES_TO_KBPS(n) (float)(((((float)n)*8.0f)/1024.0f))// ----------------------------------inline bool isWhiteSpace(char c){	return (c == ' ') || (c == '\r') || (c == '\n') || (c == '\t');}// ----------------------------------inline int strToID(char *str){	union {    	int i;        char s[8];    };    strncpy(s,str,4);    return i;}// -----------------------------------char *getCGIarg(char *str, char *arg);bool cmpCGIarg(char *str, char *arg, char *value);bool hasCGIarg(char *str, char *arg);// ----------------------------------extern void LOG(const char *fmt,...);extern void LOG_ERROR(const char *fmt,...);extern void LOG_DEBUG(const char *fmt,...);extern void LOG_NETWORK(const char *fmt,...);extern void LOG_CHANNEL(const char *fmt,...);#endif

⌨️ 快捷键说明

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