📄 305.htm
字号:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>CTerm非常精华下载</title>
</head>
<body bgcolor="#FFFFFF">
<table border="0" width="100%" cellspacing="0" cellpadding="0" height="577">
<tr><td width="32%" rowspan="3" height="123"><img src="DDl_back.jpg" width="300" height="129" alt="DDl_back.jpg"></td><td width="30%" background="DDl_back2.jpg" height="35"><p align="center"><a href="http://apue.dhs.org"><font face="黑体"><big><big>apue</big></big></font></a></td></tr>
<tr>
<td width="68%" background="DDl_back2.jpg" height="44"><big><big><font face="黑体"><p align="center"> ● UNIX网络编程 (BM: clown) </font></big></big></td></tr>
<tr>
<td width="68%" height="44" bgcolor="#000000"><font face="黑体"><big><big><p align="center"></big></big><a href="http://cterm.163.net"><img src="banner.gif" width="400" height="60" alt="banner.gif"border="0"></a></font></td>
</tr>
<tr><td width="100%" colspan="2" height="100" align="center" valign="top"><br><p align="center">[<a href="index.htm">回到开始</a>][<a href="301.htm">上一层</a>][<a href="306.htm">下一篇</a>]
<hr><p align="left"><small>发信人: guru (好读书,不求甚解), 信区: UNP <br>
标 题: linux下面的应用开发起步--小小的网络蚂蚁(-)(转载) <br>
发信站: UNIX编程 (2001年08月28日18:36:20 星期二), 站内信件 <br>
<br>
【 以下文字转载自 APUE 讨论区 】 <br>
【 原文由 chillone 所发表 】 <br>
<br>
linux下的应用开发起步--简化蚂蚁制作(一) <br>
原创 01-03-17 11:23 200p linuxbird <br>
--------------- <br>
----------------------------------------------------- <br>
------------ <br>
<br>
在读过本栏目先前有关的linux下的编程相关知识后,亲爱的网友。 <br>
不知你们是 <br>
否开始迫不及待地想开始你的第一个程序啊, <br>
当然不是那种简单的“HELLO <br>
WORLD!”啦(^=^...). <br>
在这里,linuxbird将和你一道作个简单的LINUX下的蚂蚁程序, <br>
就是DOWNLOAD <br>
吧,下载文件,不过呐, <br>
你可别期望它现在就象著名的netants那样强劲啊。 <br>
你 <br>
你 <br>
可别期望太高。(嘻嘻。。。。。。) <br>
但是,我觉得,“蚂蚁虽小,五脏俱全”所以, <br>
通过这一例子,还是可以学到 <br>
linux下编程的一些精髓。 <br>
即使是九牛一毛也是不错的。 <br>
OK, 废话少说,LET'S FLY WITH ME!!!! <br>
基本思路是这样的: <br>
利用socket来建立链接, <br>
然后用html的get方法来下载文 <br>
件。 <br>
具体步骤如下: <br>
<br>
1.先从配置文件ant.conf中读取代理服务器 <br>
的的信息:代理服务器地址、代理 <br>
服务服务器的端口。 <br>
或者直接从 <br>
命令行中取得这些参数。 <br>
2.在取得这些数据后,就可以用开始做DOWNLOAD的工作了, <br>
在这里要明白其 <br>
download的指令主要是用HTTP协议的GET方法。 <br>
另外以下程序过程中要用到以下 <br>
一些系统调用: <br>
一些系统调用: <br>
1)socket 所属库<sys/types.h>,<sys/socket.h> <br>
<br>
这是最基本的工具,用的时候要把这两个库#include进来。 <br>
有关套接口的详细知识我这里就不多讲了, <br>
主要是用它创建一个套接口。 <br>
<br>
定义如下: <br>
<br>
int socket(int domain,int type,int protocol); <br>
<br>
其中: <br>
domain为 AF_INET, <br>
<br>
第二参数为套接口的类型:SOCK_STREAM或SOCK_DRGAM.这里用前者。 <br>
第三个参数为0 <br>
sock返回的是结果存在一个数据结构sockaddr_in中,这个结构如下: <br>
struct sockaddr_in{ <br>
<br>
short int sin_family; /* 存放domain*/ <br>
unsigned short int sin_port; /*存放链接端口*/ <br>
<br>
struct in_addr sin_addr; /*存放目标地址*/ <br>
<br>
unsigned char sin_zero[8]; /* 存放该数据结构的长度*/ <br>
<br>
} <br>
<br>
2)connect 所属库<sys/types.h>,<sys/socket.h> <br>
<br>
在成功创建socket后,就可以进行连接工作了。 <br>
该函数头定义如下: <br>
int connect(int sockfd,struct sockaddr *serv_addr,int addrlen); <br>
其中: <br>
<br>
sockfd: 创建socket时返回的套接口文件描述字符; <br>
<br>
serv_addr: 指向数据结构sockaddr的指针; <br>
sin_zero[8]: 长度,可以用sizeof(cockaddr_in); <br>
<br>
3)gethostbyname 所属库<unistd.h> <br>
<br>
这个是根据域名返回IP地址的函数的. <br>
它的返回是指向数据结构 hostent的指针, <br>
该数据结构定义如下: <br>
struct hostent{ <br>
char *h_name; /*主机的正式名称*/ <br>
<br>
char **h_aliases; /* 主机的别名*/ <br>
<br>
int h_addrtype; /*返回的地址类型,一般是AF_INET*/ <br>
<br>
int h_length; /* 地址的字节长度*/ <br>
<br>
char **h_addr_list /*主机的网络地址*/ <br>
} <br>
<br>
4)sigaction 所属库<signal.h> <br>
<br>
int sigaction(int signum, const struct sigaction *act, <br>
struct sigaction *oldact); <br>
主要是用来处理进程突然中断的,旧的进程将在保存在oldact中的。 <br>
oldact是 <br>
指向数据结构sigaction <br>
的指针。 <br>
<br>
struct sigaction { <br>
<br>
void (*sa_handler)(int); <br>
<br>
sigset_t sa_mask; <br>
<br>
int sa_flags; <br>
<br>
void (*sa_restorer)(void); <br>
<br>
} <br>
<br>
5)getopt 所属库<unistd.h> <br>
<br>
int getopt(int argc, char * const argv[], <br>
const char *optstring); <br>
<br>
该函数主要是用来分析命令行中输入参数的。 <br>
<br>
其中: optstring为字符匹配串。 <br>
<br>
并且取值的结果存放在char *optarg <br>
<br>
<br>
<br>
-- <br>
一头栽倒luckylucky的怀里 <br>
※ 来源:·UNIX编程 www.tiaozhan.com/unixbbs/·[FROM: 202.114.1.61] -- <br>
※ 转载:·UNIX编程 www.tiaozhan.com/unixbbs/·[FROM: 202.114.36.225] <br>
</small><hr>
<p align="center">[<a href="index.htm">回到开始</a>][<a href="301.htm">上一层</a>][<a href="306.htm">下一篇</a>]
<p align="center"><a href="http://cterm.163.net">欢迎访问Cterm主页</a></p>
</table>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -