Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何结束接收数据 如何结束从客户端接收数据?_C++_Sockets_Http_Recv - Fatal编程技术网

C++ 如何结束接收数据 如何结束从客户端接收数据?

C++ 如何结束接收数据 如何结束从客户端接收数据?,c++,sockets,http,recv,C++,Sockets,Http,Recv,我编写了这个在端口80上侦听的代码 我想从客户端浏览器获取请求并发送响应 C++:< /P> while((l=recv(client,buff,250,0))>0){ buff[l]='\0'; printf(buff); } sprintf_s(buff,“你好,世界”); 发送(客户端,buff,strlen(buff),0); closesocket(客户端); 这段时间永远不会结束。。。在客户端浏览器向服务器发送请求后,我的代码将停止运行recv()函数。。。。。这意味着recv(

我编写了这个在端口80上侦听的代码
我想从客户端浏览器获取请求并发送响应
C++:< /P>
while((l=recv(client,buff,250,0))>0){
buff[l]='\0';
printf(buff);
}
sprintf_s(buff,“你好,世界”);
发送(客户端,buff,strlen(buff),0);
closesocket(客户端);
这段时间永远不会结束。。。在客户端浏览器向服务器发送请求后,我的代码将停止运行recv()函数。。。。。这意味着recv()函数永远不会返回零….

我应该怎么做才能知道接收数据已经完成?

您以错误的方式处理网络请求

recv
当连接关闭时,阻塞模式下的函数返回零。这意味着
recv
返回零后无法发送数据


在您的情况下,您应该解析接收到的数据并等待请求结束标记(空行)。

如何知道接收数据已完成??我不想使用内容长度
    while ( (l = recv(client, buff, 250, 0)) > 0){
        buff[l] = '\0';
        printf(buff);
    }
    sprintf_s(buff,"<h1>Hello World</h1>");
    send(client, buff, strlen(buff), 0);
    closesocket(client);