我使用命令行:
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;
}
}
答案 0 :(得分:1)
尝试:
echo -e -n "GET / HTTP/1.0\r\nConnection: Close\r\n\r\n" | nc
顺便说一下。 HTTP规范说服务器必须在HTTP / 1.0中的一个请求之后关闭连接。
PS:为什么要将UDP用于HTTP?