Unix网络编程之-------unp.h头文件详细配置-1

unix网络编程unp.h最详细全面配置说明

今天开始学习Unix网络编程这本大神之作了,由于之前在学习另外一本杰作Unix环境高级编程,遇到过第一个程序编译报错的情况,知道这是大神自己写的头文件在我们自己系统没有包括进去,所以第一步就是搭建好编程环境。好了开始了,我的Linux系统是Ubuntu,

第一步:下载 unpv13e.tar.gzhttp://download.csdn.net/detail/ts173383201/4505201

第二步:保存在一个目录下。

第三步:解压 tar -xzvf unpv13e.tar.gz

第四步:cd unpv13e ./configure。

第五步: cd lib 再 make

  1. cd…/libfree

  2. make

  3. cd…/libgai

  4. make

  5. 注:这两个make一开始我按照网上博客没有做,发现编译函数是小写时没出问题,但是程序含有大写函数时报错了,所以这两步要做。这里会遇到报错,

找到inet.h和inet——ntop.c对比发现,只要把size_t size 改成 socklen_t 即可, 会在上层目录生成libunp.a文件。

第六步: sudocp libunp.a /usr/lib sudo cp libunp.a /usr/lib64/

第七步:在lib目录中找到 unp.h,在解压目录下找到config.h,unp.h中将#include "…/config.h"改成#include “config.h” ,在unp.h中需要添加一行:#define MAX_LINE 2048,将他们复制到和我们的以后存放的源代码同一个目录下;

第八步:sudo cp unp.h /usr/include sudocp config.h /usr/include。

第九步:可能还会遇到undefined reference to ‘err_quit’,undefined reference to ‘err_sys’ 。这也是未定义的声明,也就是说这些函数没有实现,去官网把大神自己写的myerr.h,"apue.h"下载下来,放入/usr/include/ 和自己存放源代码的目录下,就可以了。

第十步:编译gcc daytimetcpcli.c-o daytimetcpcli-lunp,lunp一定要加。

写个程序验证下

#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(13);    /* daytime server */  
    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;    /* null terminate */  
        if (fputs(recvline, stdout) == EOF)  
            err_sys("fputs error");  
    }  
    if (n < 0)  
        err_sys("read error");  
  
    exit(0);  
}

编译通过了哈。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值