UNIX网络编程和UNIX环境高级编程的环境搭建和运行实例
来源:互联网 发布:win10如何忘记网络 编辑:程序博客网 时间:2024/06/06 06:44
UNIX网络编程和UNIX环境高级编程的环境搭建和运行实例
一、下载书中源代码unpv13e.tar.gz:
这个可以在书中前言给出的地址下载:http://www.unpbook.com/unpv13e.tar.gz。
1、下载完之后解压,打开unpv13e文件夹中的README,按照写的一步一步来。
Execute the following from the src/ directory:
./configure # try to figure out all implementation differences
cd lib # build the basic library that all programs need
make # use "gmake" everywhere on BSD/OS systems
cd ../libfree # continue building the basic library
make
cd ../libroute # only if your system supports 4.4BSD style routing sockets
make # only if your system supports 4.4BSD style routing sockets
cd ../libxti # only if your system supports XTI
make # only if your system supports XTI(这几步不一定需要,需要操作系统支持)
cd ../intro # build and test a basic client program
make daytimetcpcli
./daytimetcpcli 127.0.0.1
If all that works, you're all set to start compiling individual programs.
Notice that all the source code assumes tabs every 4 columns, not 8.
MORE DETAILS
============
cp libunp.a /usr/lib
注意如果提示没有权限的话,请切换到root账户执行该命令。
3、将unp.h和config.h复制到/usr/include中。
cp unp.h /usr/include
cp config.h /usr/include
4、修改unp.h 由于我们将两个文件放在同一个目录中,所以需要修改一下unp.h中的头文件包含路径,用VI或VIM打开unp.h,即将#include "../config.h"改成#include "./config.h",(视具体情况定,如果不行,试试#include "config.h"),同时在unp.h中增加一句#define MAXLINE 2048
注意:在编译时记得制定我们依赖的unplib.a库文件,在后面加上 -lunp,就可以链接此库文件。
附上我的机子出现的一些小问题:
在我看《UNIX高级环境编程》时,按照上述步骤完成了环境的搭建,运行没有问题,当我看《UNIX网络编程》时,出现unp.h错误,如socket.h报错等等,在各大论坛苦苦搜寻到如下网站:
http://pix.cs.olemiss.edu/csci561/prg561.1.html
按照上面的办法运行后发现不会报错,于是我删掉了原来的 /usr/include文件夹里的unp.h, config.h,重新下了个unpv13e,重新加进去就OK了。
运行《UNIX环境高级编程》上的程序1-9:
#include "apue.h"intmain(void){ printf("process uid=%d,gid=%d\n",getuid(),getgid()); exit(0);}
运行结果如下:
运行《UNIX网络编程》的时间获取客户端和服务器程序:
客户端程序:
#include "unp.h" int main(int argc, char** argv) { int sockfd, n; char recvline[MAXLINE + 1]; struct sockaddr_in servaddr; if (argc != 2) err_quit("Usage: a.out <IPaddress>"); if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) err_sys("socket error"); bzero(&servaddr, sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_port = htons(8080); if (inet_pton(AF_INET, argv[1], &servaddr.sin_addr) <= 0) err_quit("inet_pton error for %s", argv[1]); if (connect(sockfd, (SA*)&servaddr, sizeof(servaddr)) < 0) err_sys("connect error"); while ((n = read(sockfd, recvline, MAXLINE)) > 0) { recvline[n] = 0; if (fputs(recvline, stdout) == EOF) err_sys("fputs error"); } if (n < 0) err_sys("read error"); exit(0); }
服务器程序:
#include "unp.h" #include <time.h> int main(int argc, char** argv) { int listenfd, connfd; struct sockaddr_in servaddr; char buff[MAXLINE]; time_t ticks; listenfd = Socket(AF_INET, SOCK_STREAM, 0); bzero(&servaddr, sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_addr.s_addr = htonl(INADDR_ANY); servaddr.sin_port = htons(8080); Bind(listenfd, (SA*)&servaddr, sizeof(servaddr)); Listen(listenfd, LISTENQ); for (;;) { connfd = Accept(listenfd, (SA*)NULL, NULL); ticks = time(NULL); snprintf(buff, sizeof(buff), "%.24s\r\n", ctime(&ticks)); Write(connfd, buff, strlen(buff)); Close(connfd); } exit(0); }
运行结果如下:
- UNIX网络编程和UNIX环境高级编程的环境搭建和运行实例
- unix高级环境编程和网络编程环境配置
- UNIX环境高级编程实例运行
- Unix环境高级编程学习chapter1-Unix环境高级编程运行 第三版 环境搭建
- Unix网络编程环境搭建
- 《Unix环境高级编程》:线程和fork
- unix环境高级编程-文件和目录
- unix环境高级编程-输入和输出
- UNIX环境高级编程fcntl和dup
- 搭建《UNIX环境高级编程》环境
- UNIX高级环境编程-环境搭建
- unix环境高级编程学习1-unix文件和目录
- UNIX环境高级编程、UNIX网络编程(卷一)环境搭建
- Unix环境高级编程的学习环境的搭建
- 《UNIX环境高级编程》
- unix环境高级编程
- unix环境高级编程
- Unix环境高级编程
- BigDecimal类的简单用法
- 多进程和多线程的区别
- 车辆违章查询演示示例
- bnu 4101 线性表插入与删除操作
- Linux ALSA声卡驱动之一:ALSA架构简介
- UNIX网络编程和UNIX环境高级编程的环境搭建和运行实例
- 二分查找排序
- 最近在读芈峮所著的《iOS测试指南》
- sql server
- android keystore sha1 md5的理解
- becomeFirstResponder 不弹出键盘
- MapReduce工作原理图文详解
- 如何挂载NFS
- 学习地址