httpd的基本原理

代码
#include < sys / socket.h >
#include
< string .h >
#include
< netinet / in .h >
#include
< errno.h >


int main( int argc, char ** argv)
{
int s, con;
struct sockaddr_in cliaddr, servaddr;

s
= socket(AF_INET, SOCK_STREAM, 0 );
bzero(
& servaddr, sizeof (servaddr));
servaddr.sin_family
= AF_INET;
servaddr.sin_addr.s_addr
= htonl(INADDR_ANY);
servaddr.sin_port
= htons( 8080 );

bind(s, (
const struct sockaddr * ) & servaddr, sizeof (servaddr));

int err;
if ((err = listen(s, 10 )) == - 1 )
printf(
" errno is %d\n " , errno);

for (; ;){
// 组塞地接受一个客户或连接
con = accept(s, 0 , 0 );

// recv request
char request[ 1024 ] = { 0 };
ssize_t ret
= recv(con, request, sizeof (request), 0 );
printf(
" %s " , request);

// whatever we recv, we send 200 reponse
{
char content[] = " <head><title>index.html</title></head><body>index.html</body> " ;
char reponse[ 512 ];
sprintf(reponse,
" HTTP/1.1 200 OK\r\nContent-Type: text/html\r\nContent-Length: %d\r\n\r\n%s " , strlen(content), content);
ret
= send(con, reponse, strlen(reponse), 0 );
}

close(con);}
}

大部分的代码来自 http://www.cppblog.com/kevinlynx/archive/2008/07/30/57521.html

我只改了一点

我在Ubuntu上用chrome测试 http://localhost:8080/index.html 

会输出以下结果:

转载于:https://www.cnblogs.com/lxgeek/archive/2011/02/04/1949189.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值