UNIX网络编程(一)-unp.h文件的编译

1. 源代码的下载:
源码下载地址unpv13e

2.源代码的编译

  1. 首先解压,然后在目录unpv13e下运行./configure
  2. 进行编译链接库;
cd lib
make
cd ../libfree   
#当运行此步时可能出现下面图片中的情况,解决办法:将报错地方的size_t 换成 socklen_t
make                
cd ../libgai
make  

这里写图片描述

3.将unpv13e/lib/unp.h中的 #include "../config.h" 替换为 #include "config.h",然后再添加下面两行:

 #define MAX_LINE 2048
 #include "error.c"

4.在unpv13e目录下下打开终端,运行下面几行命令,移动文件

sudo cp libunp.a /usr/lib  
sudo cp libunp.a /usr/lib32/ 
sudo cp lib/unp.h /usr/include
sudo cp lib/error.c /usr/include 
sudo cp config.h /usr/include

5.编写实例程序

//test.c
#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);    
}  

  

编译: gcc test.c -o test,如果出现下面的错误检查第三步是否有错;

这里写图片描述

原文地址:https://www.cnblogs.com/topk/p/6580072.html