分享
 
 
 

linux下的应用开发起步--简化蚂蚁制作(一)

王朝system·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

linuxbird

在读过本栏目先前有关的linux下的编程相关知识后,亲爱的网友。不知你们是

否开始迫不及待地想开始你的第一个程序啊,当然不是那种简单的“HELLO

WORLD!”啦(^=^...).

在这里,linuxbird将和你一道作个简单的LINUX下的蚂蚁程序,就是DOWNLOAD

吧,下载文件,不过呐,你可别期望它现在就象著名的netants那样强劲啊。你

可别期望太高。(嘻嘻。。。。。。)

但是,我觉得,“蚂蚁虽小,五脏俱全”所以,通过这一例子,还是可以学到

linux下编程的一些精髓。即使是九牛一毛也是不错的。

OK, 废话少说,LET'S FLY WITH ME!!!!

基本思路是这样的:利用socket来建立链接,然后用html的get方法来下载

件。

具体步骤如下:

1.先从配置文件ant.conf中读取代理服务器的的信息:代理服务器地址、代理

服务服务器的端口。或者直接从

命令行中取得这些参数。

2.在取得这些数据后,就可以用开始做DOWNLOAD的工作了,在这里要明白其

download的指令主要是用HTTP协议的GET方法。另外以下程序过程中要用到以下

一些系统调用:

1)socket 所属库 ,

这是最基本的工具,用的时候要把这两个库#include进来。

有关套接口的详细知识我这里就不多讲了,主要是用它创建一个套接口。

定义如下:

int socket(int domain,int type,int protocol);

其中:

domain为 AF_INET,

第二参数为套接口的类型:SOCK_STREAM或SOCK_DRGAM.这里用前者。

第三个参数为0

sock返回的是结果存在一个数据结构sockaddr_in中,这个结构如下:

struct sockaddr_in{

short int sin_family; /* 存放domain*/

unsigned short int sin_port; /*存放链接端口*/

struct in_addr sin_addr; /*存放目标地址*/

unsigned char sin_zero[8]; /* 存放该数据结构的长度*/

}

2)connect 所属库 ,

在成功创建socket后,就可以进行连接工作了。

该函数头定义如下:

int connect(int sockfd,struct sockaddr *serv_addr,int addrlen);

其中:

sockfd: 创建socket时返回的套接口文件描述字符;

serv_addr: 指向数据结构sockaddr的指针;

sin_zero[8]: 长度,可以用sizeof(cockaddr_in);

3)gethostbyname 所属库

这个是根据域名返回IP地址的函数的.

它的返回是指向数据结构 hostent的指针,该数据结构定义如下:

struct hostent{

char *h_name; /*主机的正式名称*/

char **h_aliases; /* 主机的别名*/

int h_addrtype; /*返回的地址类型,一般是AF_INET*/

int h_length; /* 地址的字节长度*/

char **h_addr_list /*主机的网络地址*/

}

4)sigaction 所属库

int sigaction(int signum, const struct sigaction *act,

struct sigaction *oldact);

主要是用来处理进程突然中断的,旧的进程将在保存在oldact中的。oldact是

指向数据结构sigaction

的指针。

struct sigaction {

void (*sa_handler)(int);

sigset_t sa_mask;

int sa_flags;

void (*sa_restorer)(void);

}

5)getopt 所属库

int getopt(int argc, char * const argv[],

const char *optstring);

该函数主要是用来分析命令行中输入参数的。

其中: optstring为字符匹配串。

并且取值的结果存放在char *optarg'

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有