Linux C 网络编程的问题

软件和网站开发以及相关技术探讨
回复
chenwl
帖子: 509
注册时间: 2008-09-06 10:04

Linux C 网络编程的问题

#1

帖子 chenwl » 2009-10-02 13:23

代码: 全选

这是一个简单nslookup程序,如下。
运行结果是: ./nslookup www.google.com
: length:4
: i=0
: i=1757276480
: 64.233.189.104
: i=1757276480

#include <stdio.h>
#include <netdb.h>
#include <arpa/inet.h>
#include <netinet/in.h>

int main(int argc, char *argv[])
{
	int i;
	struct in_addr h_addr;
	struct hostent *host;
	if(argc != 2) {
		fprintf(stderr, "USAGE: %s <inet_address>\n", argv[0]);
		exit(1);
	}
	if((host = gethostbyname(argv[1])) == NULL) {
		fprintf(stderr, "(mini) nslookup failed on '%s'\n", argv[1]);
		exit(1);
	}
	fprintf(stdout,"length:%d\n", host->h_length);
//	int i;
//	int length = host->h_length;
	for(i = 0; i < host->h_length; ++i)
	{
		fprintf(stdout, "i=%d\n", i);
		h_addr.s_addr = *(in_addr_t *)host->h_addr_list[i];
		fprintf(stdout, "i=%d\n", i);
		fprintf(stdout, "%s\n", inet_ntoa(h_addr));
		fprintf(stdout, "i=%d\n", i);
	}
	exit(0);
}

那个i...囧~~怎么那么像内存泄漏的,看不出来。
谁能分析下怎么回事?
mooto
帖子: 4
注册时间: 2006-10-10 23:58

Re: Linux C 网络编程的问题

#2

帖子 mooto » 2009-10-04 20:09

h_length 等于 4 是IPv4地址长
另外gcc version 4.3.3 (Ubuntu 4.3.3-5ubuntu4)  i输出正常
chenwl
帖子: 509
注册时间: 2008-09-06 10:04

Re: Linux C 网络编程的问题

#3

帖子 chenwl » 2009-10-05 12:01

mooto 写了:h_length 等于 4 是IPv4地址长
另外gcc version 4.3.3 (Ubuntu 4.3.3-5ubuntu4)  i输出正常
那怎么看地址有多少个呢?
蓝色雪狐
帖子: 10
注册时间: 2009-09-27 15:05

Re: Linux C 网络编程的问题

#4

帖子 蓝色雪狐 » 2009-10-10 12:51

最好用GDB调一下就OK了
回复