我目前正在撰写一个简单的聊天程序
我要做的是在聊天消息前显示您的用户名(其他人已经从服务器上显示了该用户名)。
现在我看到了一些这样做的方法
要么我以某种方式阻止输出(例如,不输出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);
}
}
}
}