C与HTML页面的客户端/服务器通信

时间:2011-06-10 18:09:30

标签: html c browser client

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>

我的问题是,为什么当我添加这些代码行时,客户端不再看到网页上应该有什么内容,是否有更好的方法来执行此操作?

1 个答案:

答案 0 :(得分:0)

您正试图在C中从头开始编写Web服务器......我无法想象一种更难以实现此目的的方法。 HTTP协议是无状态的。服务器在TCP端口上侦听新连接。客户端连接并向服务器发送HTTP请求。服务器解析HTTP请求并将HTTP响应发送回客户端。客户端断开连接。 Web浏览器通常不会在收到响应后保持TCP连接对Web服务器开放。这有例外,但这需要您向客户端发送特殊的HTTP标头,并且您的服务器支持它。

我可以谦卑地建议您通过以下方式为自己节省很多痛苦:

  • 安装网络服务器(apache就足够了)。这将使您免于所有C套接字代码,让您专注于数据处理。
  • 如果您想使用C来处理服务器和客户端之间的交互,那么您可以使用CGI C库来为您执行大量的HTTP苦差事。例如http://www.boutell.com/cgic/之类的东西。否则,Perl或PHP是一个不错的选择。