- 博客(10)
- 资源 (4)
- 收藏
- 关注
原创 防止全局变量、头文件重复包含与 extern 的使用
C语言中经常会出现文件重复包含而导致全局变量重复定义,下面以一个例子说明-----MakefileCC = gccOBJS = main.o errhandle.o strcopy.oCFLAGS = -Wall -std=c99main: ${OBJS} # or $(OBJS), ${OBJS} is shell style ${CC} ${CFLAGS} -o $@ ${
2012-08-17 21:25:57 2928
原创 主机名、服务与地址的映射——getaddrinfo(),getnameinfo(),gai_strerror()
/* Structure to contain information about address of a service provider. */struct addrinfo{ int ai_flags; /* Input flags. */ int ai_family; /* Protocol family for socket. */ int ai_sockt
2012-08-16 22:27:11 17487 1
原创 获取协议名、协议号——getprotoent(),getprotobyname(),getprotobynumber()
/* Description of data base entry for a single service. */struct protoent{ char *p_name; /* Official protocol name. */ char **p_aliases; /* Alias list. */ int p_proto; /* Protocol numb
2012-08-16 10:21:59 4120
原创 获取服务名、服务端口号、服务所用协议——getservent(),getservbyname(),getservbyport()
Services are represented by the port number portion of the address. Each service is offered on a unique, well-known port number. We can map a service name to a port number withgetservbyname, map a p
2012-08-16 10:01:04 4491 2
原创 获取网络号、网络名——getnetent(),getnetbyaddr(),getnetbyname()
struct netent *getnetent(void);struct netent *getnetbyname(const char *name);struct netent *getnetbyaddr(uint32_t net, int type);void setnetent(int stayopen);void endnetent(void);/* Description
2012-08-15 21:39:45 4665
原创 IP地址转换函数——inet_ntop(),inet_pton(),htonl(),ntohl()
1、点分十进制字符串(dotted-decimal notation)与二进制数值互转const char *inet_ntop(int af, const void *src, char *dst, socklen_t size);int inet_pton(int af, const char *src, void *dst);注意:(1) 二进制数值形式是网络字节序(network
2012-08-15 20:29:47 7579
原创 防止内存泄露的几个良好的编码习惯
以将子函数设计成共别人使用的 API 的思想来考虑如何设计子函数----------情景:主调函数需要调用子函数 f,函数f返回一段数据区1、在主调函数中分配好内存,将地址传递给子函数f。这样做的好处是,内存的释放工作交给分配者,子函数不用管,保证子函数的模块独立性。与之对应的不良编码习惯是,子函数分配内存,将这段内存的首地址返回给主调函数,这样做的坏处很明显,调用者很容易忘记释放这段
2012-08-15 20:12:51 1656
原创 C99数据类型
【注意】C标准没有具体规定各种类型数据占用存储单元的长度,这是由各编译系统自行决定的。≥C标准只要求long型数据长度不短于int型,short型不长于int型。即sizeof(short)≤sizeof(int)≤sizeof(long)≤sizeof(long long)VC和gcc所占字节数:int shortlonglong longVC 4 248gc
2012-08-15 13:29:29 3084
原创 获取主机名、IP——gethostent(),gethostbyname(),gethostbyaddr()
1、原理:查询 /etc/hosts 等文件及 DNS or NIS 服务器The domain name queries carried out by gethostbyname() and gethostbyaddr() use a combination of any or all of the name server named(8), a broken out line fro
2012-08-13 21:21:20 8680 1
原创 Linux C socket编程中几个常见的结构体定义
● sockaddr#include struct sockaddr{ sa_family_t sa_family; char sa_data[14];};● in_addr_t#include /* Internet address. */typedef uint32_t in_addr_t;struct in_addr{ in_addr_t s_addr;
2012-08-13 16:32:28 2770 1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人