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

📄 cnet.c

📁 Gambas is a graphical development environment based on a Basic interpreter, like Visual Basic. It us
💻 C
字号:
/***************************************************************************  CNet.c  Network component  (c) 2003-2004 Daniel Campos Fern�dez <danielcampos@netcourrier.com>  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 1, 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.  You should have received a copy of the GNU General Public License  along with this program; if not, write to the Free Software  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.***************************************************************************/#define __CNET_C#include "main.h"#include <stdio.h>#include <string.h>#include "CNet.h"void ToIPv4(char *src,char *dst,int leadzero){	int myloop;	int zone=0;	int np=0;	int bucle;	int nc[4]={0,0,0,0};		dst[0]=0;		if (!src) return;		for (myloop=0;myloop<strlen(src);myloop++)	{		switch(zone)		{			case 0:				if (src[myloop]!=' ')				{				zone=1;				myloop--;				}				break;						case 1:				if (src[myloop]==' ')				{					zone=2;				}				else				{					if ( (src[myloop]<48) || (src[myloop]>57) )					{						if (src[myloop]=='.') { if (++np > 3) return; }						else { return; }					}					else					{						nc[np]*=10;						nc[np]+=(src[myloop]-48);						if (nc[np]>255) return;					}				}				break;						case 2:				if (src[myloop]!=' ') return;				break;				}	}	if (!leadzero)		sprintf(dst,"%d.%d.%d.%d\0",nc[0],nc[1],nc[2],nc[3]); 	else	{		sprintf(dst,"%3d.%3d.%3d.%3d\0",nc[0],nc[1],nc[2],nc[3]);		for (bucle=0;bucle<15;bucle++)			if (dst[bucle]==' ') dst[bucle]='0';	}}BEGIN_METHOD(CNET_Format,GB_STRING IpString;GB_INTEGER Format;GB_BOOLEAN LeadZero;)	int leadzero=0;	char dst[16];	if (!MISSING(Format))		if (VARG(Format)!=0) { GB.Error("Unknown Format"); return; }		if (!MISSING(LeadZero)) leadzero=VARG(LeadZero);	if (!LENGTH(IpString)) return;	ToIPv4 (STRING(IpString),dst,leadzero);	GB.ReturnNewString(dst,0);	END_METHOD/*************************************************************** Here we declare the public interface of NetCode class ***************************************************************/GB_DESC CNetDesc[] ={  GB_DECLARE("Net", 0), GB_VIRTUAL_CLASS(),  /* IP Formatting */  GB_CONSTANT("IPv4","i",0),  /* normal operation */  GB_CONSTANT("Inactive", "i", 0),  GB_CONSTANT("Active", "i", 1),  GB_CONSTANT("Pending", "i", 2),  GB_CONSTANT("Accepting","i",3),  GB_CONSTANT("ReceivingData","i",4),  GB_CONSTANT("Searching", "i", 5),  GB_CONSTANT("Connecting", "i", 6),  GB_CONSTANT("Connected", "i", 7),  /* net error codes */  GB_CONSTANT("CannotCreateSocket", "i", -2),  GB_CONSTANT("ConnectionRefused", "i", -3),  GB_CONSTANT("CannotRead", "i", -4),  GB_CONSTANT("CannotWrite", "i", -5),  GB_CONSTANT("HostNotFound", "i", -6),  GB_CONSTANT("CannotBindSocket", "i", -10),  GB_CONSTANT("CannotListen", "i", -14),  /* SeverSocket, type */  GB_CONSTANT("Internet", "i", 1),  GB_CONSTANT("Local", "i", 0),  GB_CONSTANT("Unix", "i", 0),    GB_STATIC_METHOD("Format", "s", CNET_Format, "(IpString)s[(Format)i(LeadZero)b]"),    GB_END_DECLARE};

⌨️ 快捷键说明

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