打印
[C语言]

tcp传输困惑?qiu大神进

[复制链接]
531|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yanghelovehuang|  楼主 | 2018-7-16 17:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近在写一个功能,就是客户端查询英文单词的解释,例如:yarn             n.  fibres that have been spun for knitting, weaving, etc 客户端输入单词然后发送给服务器,服务器把解释提取出来发送回客户端:具体代码如下:
服务器:
if((fp = fopen("/home/lzhh/MYSELFE/applet/dictionary/dict.txt", "r")) == NULL)
        {
                printf("open dict.txt failed\n");

                exit(-1);
        }

        while(fgets(line, sizeof(line), fp) != NULL)
        {
                if(line[strlen(line) - 1] == '\n')
                        line[strlen(line) - 1] = '\0';
                sscanf(line, "%[^ ]", ssca);
                if((strcmp(ssca, msg.data)) == 0)
                {

                        sscanf(line, "%*[^ ]%*[ ]%[^\n]", msg.data);

                        send(connectfd, &msg, sizeof(msg), 0);
                        fseek(fp, 0, SEEK_SET);
                        fclose(fp);
                        break;
                }

                sprintf(msg.data, "The contents of your query do not exist");
                send(connectfd, &msg, sizeof(msg), 0);

         }
客户端:
                printf("input word : ");
                scanf("%s", msg.data);

                printf("*******************a\n");
                //输入#退出
                if(strcmp(msg.data, "#") == 0)
                {
                        break;
                }
                send(sockfd, &msg, sizeof(MSG), 0);
                recv(sockfd, &msg, sizeof(MSG), 0);
                printf("******%s\n", msg.data);

如果不加那两段红色的代码,客户端只要输入单词正确,随便查都能得到正确的解释。
但是加上红色代码,客户端再查询,得到的结果很乱,有的是以前查询单词的解释,有的是正确解释,有的提示用户单词不存在的信息。就好像是客户端返回的是上次查询msg.data保存的结果(解释的信息保存在msg.data中)。
这是为什么啊大神们,sprintf, send函数应该没啥影响啊 为什么加上他们就会出现错误呢?

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

156

主题

324

帖子

1

粉丝