[Chapter11] 由于没加括号导致的bug——调了一个多小时

Posted Uuuuuup

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Chapter11] 由于没加括号导致的bug——调了一个多小时相关的知识,希望对你有一定的参考价值。

在本章写远程ls程序rls.c和rlsd.c时,while( msglen = read( sock_id, message, BUFSIZ ) > 0 )导致了严重的错误——客户端收到服务器返回的信息,但什么都不打印。

具体代码如下:

/* rls.c - client program of remote ls 
 *      ./rls ubuntu 15000 ‘path‘
 */

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>

int main( int argc, char *argv[] )
/*
 * 1.get a socket
 * 2.set server addr
 * 3.connect server
 * 4.write path to socket stream
 * 5.get message from server
 */
{
    struct sockaddr_in saddr;
    struct hostent *hp;
    int sock_id;
    char message[BUFSIZ];
    int msglen;

    sock_id = socket( AF_INET, SOCK_STREAM, 0 );

    bzero( (void *)&saddr, sizeof(saddr) );
    hp = gethostbyname( argv[1] );
    bcopy( hp->h_addr, (void *)&saddr.sin_addr, hp->h_length );
    saddr.sin_port = htons( atoi(argv[2]) );
    saddr.sin_family = AF_INET;

    connect( sock_id, (struct sockaddr *)&saddr, sizeof(saddr) );

    write( sock_id, argv[3], strlen(argv[3]) );
    write( sock_id, "\n", 1 );

    while( (msglen = read(sock_id, message, BUFSIZ)) > 0 )
        write( 1, message, msglen );

    close( sock_id );
}

 

以上是关于[Chapter11] 由于没加括号导致的bug——调了一个多小时的主要内容,如果未能解决你的问题,请参考以下文章

谈谈我的技术栈

[cocos-quick]按钮因为文件载入路径没加normal导致看不到

Chapter 14_2 全局变量声明

Chapter11:关联容器

用AutoHotkey删除Word里图片后面的特定字符(Word查找图片的BUG)

chapter11_2 Lua链表与队列