📄 webserver.c
字号:
/*****************************************************/
/**创建者:杨希 日期:2005/04/30 **/
/**文件名:globals.h 版本:1.0.4 **/
/**描 述:WEB服务器的主驱动程序文件,其结构为典型的**/
/** 多进程结构。 **/
/**其 它:相比1.0.2主要改正了getparaments的一些BUG **/
/*****************************************************/
#include"globals.h"
#include"helpfunc.h"
/******************************************/
int main(int argc,char *argv[])
{
int sockfd, acc_sock;
struct sockaddr_in serverAddr, clientAddr;
int len;
pid_t pid;
/* 建立通信的套接口 */
sockfd = socket(AF_INET, SOCK_STREAM, 0);
if(sockfd < 0){
fprintf(stderr, "creat sock err!\n");
exit(1);
}
/* 初始化主机信息 */
memset(&serverAddr, 0, sizeof(serverAddr));
serverAddr.sin_family = AF_INET;
serverAddr.sin_port = htons(SERVER_PORT);
serverAddr.sin_addr.s_addr = htonl(INADDR_ANY);
if(bind(sockfd, &serverAddr,sizeof(serverAddr)) < 0){
fprintf(stderr, "bind error!\n");
exit(1);
}
if(listen(sockfd,10) < 0){
fprintf(stderr, "listen error!\n");
exit(1);
}
/* 开始接受用户请求 */
while(1){
len = sizeof(struct sockaddr_in);
acc_sock = accept(sockfd, &clientAddr, &len);
if(acc_sock < 0){
fprintf(stderr, "accept error!\n");
exit(1);
}
/* 产生一个子进程具体处理请求 */
if((pid = fork()) < 0){
fprintf(stderr, "creat child error!\n");
exit(1);
}else if(pid == 0){
handleRequest(acc_sock, clientAddr);
}else{
/* 父进程关闭该套接口,继续监听其它主机的连接请求*/
close(acc_sock);
memset(&clientAddr, 0, sizeof(clientAddr));
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -