C - 操纵stdin或stdout

时间:2017-04-07 14:55:43

标签: c networking stdout stdin

我目前正在撰写一个简单的聊天程序 我要做的是在聊天消息前显示您的用户名(其他人已经从服务器上显示了该用户名)。
现在我看到了一些这样做的方法 要么我以某种方式阻止输出(例如,不输出stdin或从stdout中删除最后一行)并让服务器处理用户名concat,或者我操纵stdin / stdout并在客户端使用我的用户名在该行前面添加前缀。
问题是,我不知道怎么做,谷歌搜索不是很有帮助。

下面是主循环的代码片段:

while(1){
    //printf("while runs\n");
    readfds_buffer = readfds;

    rv = select(sockfd+1, &readfds_buffer, NULL, NULL, &tv);

    if (rv == -1) {
        perror("select");
    } else if (rv != 0) {
        if (FD_ISSET(sockfd, &readfds_buffer)) {
            if ((numbytes = recv(sockfd, buf, MAXDATASIZE-1, 0)) == -1) {
                perror("recv");
                exit(1);
            }

            //buf[numbytes-1] = '\n';
            buf[numbytes] = '\0';

           if (numbytes > 1) {
               printf("%s",buf);
           }
        }
        if (FD_ISSET(0, &readfds_buffer)) {
            if (fgets(str, 79, stdin) != NULL){
                send(sockfd, &str, sizeof(str), 0);
            }
        }
    }   
}

0 个答案:

没有答案