如何让客户端知道服务器已经完成了在C中发送数据?

时间:2015-10-08 21:36:06

标签: c linux udp

我使用命令行:

echo -e -n" GET / HTTP / 1.0 \ r \ n \ r \ n" | nc -u -s

模仿客户端来测试我的服务器程序。

客户端阻止等待服务器的数据。如何让客户端知道服务器已发送所有数据并停止阻止。

以下是我的代码片段,用于发送文件内容。

while(1){
            bzero(buf,MAX);
            fread(buf,MAX,1,fp);
            if(filelen>=MAX){
                sendto(sockfd, buf, MAX, 0,
               (struct sockaddr *) &cli_addr, cli_len);
               filelen-=MAX;
            }
            else{
                sendto(sockfd, buf, filelen, 0,
               (struct sockaddr *) &cli_addr, cli_len);
                fclose(fp);
                break;
            }
        }

1 个答案:

答案 0 :(得分:1)

尝试:

echo -e -n "GET / HTTP/1.0\r\nConnection: Close\r\n\r\n" | nc

顺便说一下。 HTTP规范说服务器必须在HTTP / 1.0中的一个请求之后关闭连接。

PS:为什么要将UDP用于HTTP?