사례 학습 개발 웹 서버 (1)

4314 단어 webserver
저 와 마찬가지 로 APACHE NGINX 의 작업 원 리 를 알 고 싶 어서 서버 를 독립 적 으로 쓸 수 있 는 친구 들 이 많다 고 생각 합 니 다.저 는 C 언어 개발 에 대해 거의 아무것도 모 릅 니 다. 인터넷 에 있 는 많은 글 을 보 았 습 니 다. 모두 SOCKET 프로 그래 밍 등 몇 백 페이지 를 먼저 말 한 후에 야 여기까지 말 할 수 있 었 습 니 다. 공부 하 는 것 이 매우 고 통 스 러 웠 습 니 다. 다른 방식 이 될 수 있 는 지, 거꾸로 말 하 는 방식 이 다른 사람들 로 하여 금 그렇게 고 통 스 럽 지 않 게 할 수 있 는 지 자주 생각 했 습 니 다.그래 잔말 말고 시작 하 자 ~
오늘 할 작업 목표: 환경 설정, 원본 코드 탐색.
1. 웹 서버 프로그램 다운로드 다운로드 하 다.
설치make
3. 서버 엔 드 서 비 스 를 시작 합 니 다.. /shttpd
[root@sysadmin webserver]# ./shttpd 
sHTTPD ListenPort: 8062
       MaxClient: 4
       DocumentRoot: /usr/local/var/www/
       DefaultFile:index.html
       CGIRoot: 
       DefaultFile:index.html
       TimeOut:3
       ConfigFile:/etc/sHTTPd.conf
==>Worker_ScheduleRun
==>Worker_Init
==>Worker_Add
==>worker
<==Worker_Add
==>Worker_Add
==>worker
<==Worker_Add
<==Worker_Init

4. 테스트.curl '127.0.0.1:8062/index.html'
[root@sysadmin study]# curl '127.0.0.1:8062/index.html'
test

 
5. SERVER 표시
client comming
Do task
==>do_work
select retval:1
Read 166 bytes,'GET /index.html HTTP/1.1
User-Agent: curl/7.15.5 (i686-redhat-linux-gnu) libcurl/7.15.5 OpenSSL/0.9.8b zlib/1.2.3 libidn/0.6.5
Host: 127.0.0.1:8062
Accept: */*

'
==>Request_Parse
==>Request_HeaderParse
<==Request_HeaderParse
URI:'/index.html',patch:'/usr/local/var/www///index.html'
<==Request_Parse
==>Request_Handle
==>Method_Do
==>Method_DoGet
==>Mine_Type
uri:/index.html,len:11,ext is html
found it, ext is html
<==Mine_Type
n:-1
content length:5, status:206
<==Method_DoGet
<==Method_Do
echo header:HTTP/1.1 206 Partial Content
Date: Thu, 04 Apr 2013 13:45:15 GMT
Last-Modified: Mon, 01 Apr 2013 21:08:47 GMT
Etag: "515986df.5"
Content-Type: text/html
Content-Length: 5
Accept-Ranges: bytes
Content-Range: bytes 0-4/5

, write to client 229 bytes, status:206
response len:16384, content length:5
read 5 bytes,write 5 bytes
<==Request_Handle
select retval:1
Read 0 bytes,''
<==do_work

6. 여기까지!나머지 는 시간 이 있 을 때 프로그램 을 보고 결과 가 어떻게 나 왔 는 지 알 아 보 는 것 이다.

좋은 웹페이지 즐겨찾기