第1章

作者: vonww | 来源:发表于2020-06-17 20:35 被阅读0次

    1.1

    netstat -i //获取网络接口信息
    
    ifconfig en0 //以太网接口,mac环境
    
    ping x.x.x.x //跟在broadcast后的广播地址,得到包括自身在内的主机ip地址
    

    1.2

    'unp.h' file not found的解决办法(mac系统)

    gcc --version//得到查找路径
    

    --with-gxx-include-dir=path/usr这一条就是gcc的查找路径

    设你电脑上的源码文件夹的绝对路径为mac/unpv13e
    建立三个软连接,分别用于查找头文件以及链接静态库

    sudo ln -s mac/unpv13e/lib/unp.h path/usr/include/unp.h //绝对路径
    sudo ln -s mac/unpv13e/config.h path/usr/include/config.h //绝对路径
    
    sudo ln -s mac/unpv13e/libunp.a path/usr/lib/libunp.a //绝对路径
    

    1.3

    socket error: Address family not supported by protocol family
    函数只返回-1,错误变量存在全局变量errno中,顺着定义err_sys-》err_doit-》errno》sys/errno.h可以看到具体定义如下。

    #define EAFNOSUPPORT    47              /* Address family not supported by protocol family */
    

    1.4

    daytimetcpcli.c

            xxx
        servaddr.sin_port   = htons(9999);  /* daytime server */
            xxx
    
        int cnt=0;//计数器声明
        while ( (n = read(sockfd, recvline, MAXLINE)) > 0) {
            cnt++;//加一
            recvline[n] = 0;
            if (fputs(recvline, stdout) == EOF)
                err_sys("fputs error");
        }
        printf("计数:%d\n",cnt);//输出
    

    1.5

    daytimetcpsrv.c

            xxx
        servaddr.sin_port        = htons(9999); /* daytime server */
            xxx
        for ( ; ; ) {
            connfd = Accept(listenfd, (SA *) NULL, NULL);
    
            ticks = time(NULL);
            snprintf(buff, sizeof(buff), "%.24s\r\n", ctime(&ticks));
            for (size_t i = 0; i < strlen(buff); i++)
            {
                Write(connfd, buff+i, 1);
                sleep(1);//给缓冲时间
            }
            Close(connfd);
        }
    

    相关文章

      网友评论

          本文标题:第1章

          本文链接:https://www.haomeiwen.com/subject/gbkexktx.html