客户端服务器在C中使用TCP

时间:2017-09-25 21:38:33

标签: c tcp client-server

我正在研究客户端服务器项目,我必须从服务器端的文件中搜索客户端请求的数据。

我在客户端的代码:

        printf("Enter data to search: \n");
        fgets(buf,sizeof(buf),stdin);
        send(s,buf, strlen(buf),0);
        printf("Result of your search: ");
        if(len = recv(s, buf, sizeof(buf),0)>0)
        printf("\nMessage Received From Server -\n  %s\n",buf);

我在服务器端的代码:

            fp=fopen("courses.txt","r");

            len=recv(new_s,buf,sizeof(buf),0);

            char temp[256],tmp[512];
            char *search;



            while(fgets(tmp, 512, fp)!=NULL)
            {
                search= strstr(tmp, buf);
                if(search)
                {    
                    send(new_s,tmp,strlen(tmp),0);

                }  

            }

strstr()始终返回null值,因此它永远不会进入if语句。

1 个答案:

答案 0 :(得分:2)

TCP不是消息协议。如果要发送和接收消息(您的查询是),则需要消息协议。首先准确定义消息的界限(在字节级别),然后编写代码以发送和接收消息。

另外,请勿忽略recv的返回值。你怎么知道你收到了多少字节?除了C风格的字符串外,不要使用strlenstrcpy等函数。为方便起见,您可以使发送和接收消息函数获取并返回C样式的字符串。但是,不要假设线上的数据将是C风格的字符串,直到您的代码成为一个。