gpt4 book ai didi

c - C语言如何让客户端知道服务器已经发送完数据?

转载 作者:太空宇宙 更新时间:2023-11-04 10:46:10 25 4
gpt4 key购买 nike

我使用命令行:

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;
}
}

最佳答案

尝试:

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

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

PS:HTTP为什么要用UDP?

关于c - C语言如何让客户端知道服务器已经发送完数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33026348/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com