newsockfd = accept(sockfd, struct sockaddr *) &cli_addr, &clilen);
FILE *write = fdopen(newsockfd, "w");
fprintf(write, "some html code is here");
fflush(write);
n = read(newsockfd,buffer,255);
printf(buffer);
基本设置是用C编写的服务器,等待客户端连接,然后发送html代码以显示页面。
当我没有最后两行代码时,这个服务器工作正常,我可以用我的浏览器连接到它,看到我在html中写的东西显示得非常好。问题是在页面上我有一个html表单,所以我希望能够得到人们在我的C服务器上输入表单的内容。当我添加最后两行代码从客户端读取然后尝试通过我的Web浏览器连接到服务器时,我不再看到表单或网页上显示的任何其他内容,我的服务器只是等待响应。 / p>
我的问题是,为什么当我添加这些代码行时,客户端不再看到网页上应该有什么内容,是否有更好的方法来执行此操作?
答案 0 :(得分:0)
您正试图在C中从头开始编写Web服务器......我无法想象一种更难以实现此目的的方法。 HTTP协议是无状态的。服务器在TCP端口上侦听新连接。客户端连接并向服务器发送HTTP请求。服务器解析HTTP请求并将HTTP响应发送回客户端。客户端断开连接。 Web浏览器通常不会在收到响应后保持TCP连接对Web服务器开放。这有例外,但这需要您向客户端发送特殊的HTTP标头,并且您的服务器支持它。
我可以谦卑地建议您通过以下方式为自己节省很多痛苦: