Distribute/etc.2012. 9. 2. 22:31


심플 웹서버 실행화면- 심플 웹서버 실행화면 -

그저께부터 쉬엄쉬엄 만들기 시작한 심플 웹서버 프로젝트.

이제 생각 했던 기능은 거의 구현 된거같다.


구현내용]

1. 웹서버의 기본적인 파일요청에 대한 응답처리.

2. 응답시 미리 정의 된 MIME타입 테이블에 따라 올바른 MIME타입 반환

3. HTTP 1.1의 Continuous한 연결처리

4. 경로명등에 한글지원 (UTF-8, URL Decode)

5. Server side scripting 지원


다른것 보다 5번이 제일 중요하다.

사실 원래는 웹서버를 만들려는게 아니라 R모 사이트와 관련있는 일명 "펑게"를 만들려고 생각했었는데..

하는김에 서버스크립트를 지원하는 웹서버를 만들어서

다른데에도 범용적으로 쓸 수 있으면 좋겠다 싶어서 심플 웹서버 프로젝트가 시작됐다.

이 프로젝트의 중점인 서버스크립트 지원을 구현하는데에 RunUO의 사용자 스크립트 컴파일, 호출 방법 등이 이용되었다.

서버스크립트는 JSP의 서블릿과 비슷하게, C#코드로 요청에 대한 처리를 담당할 클래스파일을 작성하면,

서버가 실행 될 때 해당 파일들을 컴파일해 모듈로서 서버에 로드된다.

하지만 서블릿과 달리 코드를 수정하면 웹서버를 재시작해야 적용된다.


동작순서]

1. Main 메소드 실행

2. 사용자가 작성한 스크립트 목록 수집 및 컴파일

3. 컴파일 된 스크립트모듈 로드

4. 스크립트모듈 내 각 클래스에 Initialize()메소드 존재시 해당 메소드 실행

   - 이 때 서버 환경, MIME타입 등록 등 기본 정보 구성 (서버 스크립트인 Configure.cs 이용)

   - 서버 스크립트로 사용 할 클래스도 이 때에 Container클래스에 등록해야 사용 가능하다.

5. 리스너 스레드 생성 및 리스너 시작, 클라이언트 연결 대기

6. 클라이언트 접속시 해당 요청 처리


서버스크립트 작성 예]

- 클래스 내에 public, static으로 선언된 Initialize() 메소드 생성

  - 이 메소드는 스크립트 컴파일 후 임의로 실행 되는 메소드로, 컨테이너에 서버 스크립트를 등록하는것이 주 목적이다.

- 요청처리기 생성

  - 클라이언트의 요청을 처리하기 위해 실행 될 메소드이다.

  - 기본형: public static void 메소드명(Request req, out Response resp)

  - 스크립트 내에서 out으로 지정된 Response형 인수를 생성해 가공하면,

     이 메소드를 호출한 컨테이너가 클라이언트에게 전송하는 구조이다.


서버스크립트 작성 예시- 서버스크립트 작성 예시 -



심플 웹서버 테스트화면- 심플 웹서버 테스트화면 -


===============================================================================================================

블로그 유입 키워드를 보면 C# 웹서버에 대한 관심이 많은 듯 하다.

개강 이후 지금까지 전혀 건드리지 않아서 POST 메소드에대한 처리도 안되지만 뭐..

일단 필요한 사람은 만들어쓰겠지..

SimpleWebServer.zip

'Distribute > etc.' 카테고리의 다른 글

Photoshop 7.0 웹용으로 저장 플러그인  (0) 2008.11.22
[JS] Net Transport의 IE 메뉴 확장 파일  (2) 2008.01.18
[VB] Clubbox Trayer v1.0  (0) 2007.08.12
[PHP] Wake on Lan Class  (0) 2007.07.05
Posted by 로드펭귄
Distribute/etc.2008. 11. 22. 06:13

음.. 정말 간만의 포스팅이구나.. ' ㅅ'
포토샵 7.0은 웹용으로 저장시 파일명에 한글등이 섞여있으면

저장될 파일 이름 중 일부에 비라틴 문자가 들어 있습니다.
이러한 파일 이름은 일부 웹 브라우저나 서버와 호환되지 않습니다.
라며 귀찮게 한다.
귀찮을 뿐이지 딱히 저장이 안되거나 하는건 아니라서 별 신경 안쓰고 썼지만..
심심해서 수정 해 봤다 + _+b

웹용으로 저장.zip

"플러그인폴더\Adobe Photoshop Only\Import-Export"에 넣어주면 된다.
* 한글 포토샵 7.0용.

'Distribute > etc.' 카테고리의 다른 글

[C#] 심플 웹서버 프로젝트  (3) 2012.09.02
[JS] Net Transport의 IE 메뉴 확장 파일  (2) 2008.01.18
[VB] Clubbox Trayer v1.0  (0) 2007.08.12
[PHP] Wake on Lan Class  (0) 2007.07.05
Posted by 로드펭귄
Distribute/etc.2008. 1. 18. 11:33
Net Transport를 설치하면 Internet Explorer를 사용 할 때 마우스 오른쪽 메뉴에
"NetXfer로 받기"와 "NetXfer로 모두 받기"가 추가된다.

사용자 삽입 이미지


모두 받기는 별 문제 없이 잘 실행 되지만 받기는 거의 대부분 스크립트 오류를 뱉으며 메롱하더라.

사용자 삽입 이미지


받기는 Net Transport가 설치된 폴더의 NXAddLink.html에서 처리한다.
열어보니 VBScript로 만들어져있더라.
오류가 뜨는게 external.menuArguments.event.clientX 이 구문인데..
clientX는 기본적으로 있는 메소드일텐데 어째서 오류를 뱉는지 모르겠다.
결국 아~무 근거 없이 VBS의 문제라고 단정짓고 JavaScript로 변환해보니 잘 실행되더라..

만든 김에 EMBED, OBJECT등으로 삽입된 파일을 긁는 메뉴도 만들어봤는데
아무 꼼수 없이 평범하게 삽입 된 객체의 파일은 잘 긁어오니..  쓸만하더라.
잘 쓸 일은 없겠지만 가끔 받아놓고 싶은 동영상이나 플래시 파일을 발견해도
소스보기 귀찮아서 그냥 패스하곤 했는데 이제 클릭 한번이면 웬만한건 그냥 다운 될 테니.. = ㅁ=

Net Transport IE Extension.zip


* 압축을 풀고 NXAddLink.html를 Net Transport가 설치된 폴더에 복사하면 된다.
* NXAddObj.html는 EMBED, OBJECT등으로 삽입된 파일을 받는 메뉴.
  사용하려면 NXAddObj.reg파일을 열고 NXAddObj.html의 경로를 수정한 뒤 실행한다.

'Distribute > etc.' 카테고리의 다른 글

[C#] 심플 웹서버 프로젝트  (3) 2012.09.02
Photoshop 7.0 웹용으로 저장 플러그인  (0) 2008.11.22
[VB] Clubbox Trayer v1.0  (0) 2007.08.12
[PHP] Wake on Lan Class  (0) 2007.07.05
Posted by 로드펭귄
Distribute/etc.2007. 8. 12. 21:53

가끔 explorer.exe가 다시 실행되면(시작표시줄이 다시 나타나면) 트레이의 아이콘이 초기화되는데..

클박 다운로더는 이 때 아이콘을 다시 만들지 않는다;;

다운로드중이면 이어받기를 지원 안하니까 강제종료하고 다시 실행할 수도 없는 노릇이니..

숨어있는 다운로더 윈도우를 띄워주는 프로그램(Clubbox Shower)을 만들어 썼었는데

다운로더를 볼 때 마다 실행해야되니 영 귀찮달까.. (어차피 빠른실행에 넣고 쓰지만..;;)

그래서 그냥 트레이 아이콘을 만들어주는 프로그램을 만들고 싶었다. (사실은 할 일이 없어서 = ㅅ=)

그래서 다운로더를 살짝 열어서 NOTIFYICONDATA에 넣는 값을 보니..


hWnd = 00300116

uId = 9B

uCallBackMessage = 0464

이렇더라 = ㅁ=;

윈도우 핸들은 클래스명이 "Afx:00400000:0"이고 윈도우명은 없다.

그런데 이게 또 같은 윈도우가 많길래 어떤식으로 찾을까 하다가

까이꺼 대~충 다운로더랑 프로세스ID가 같고 윈도우명의 길이가 0인걸로 넘겼다;;



* 글을 쓰고 보니 다운로더가 실행중이지 않을 때의 처리를 안했구나..

* 컴파일 후에 리소스편집 프로그램으로 VB의 기본 아이콘을 없애지 않으면

   그 아이콘이 트레이에 추가된다. (사용 될 아이콘은 리소스로 추가된 두번째 아이콘)

* Clubbox Shower는 소스가 없다 (저장하지 않았을 정도로 단순하니..)


* 다운로드: CBTRAYER.exe     cbshower.exe


* 소스코드: CBTRAYER_SRC.zip


'Distribute > etc.' 카테고리의 다른 글

[C#] 심플 웹서버 프로젝트  (3) 2012.09.02
Photoshop 7.0 웹용으로 저장 플러그인  (0) 2008.11.22
[JS] Net Transport의 IE 메뉴 확장 파일  (2) 2008.01.18
[PHP] Wake on Lan Class  (0) 2007.07.05
Posted by 로드펭귄
Distribute/etc.2007. 7. 5. 15:14
새벽에 WOL을 성공하니 집 밖에서도 쓸 수 있게 하고픈 욕심이 생겼다.

공유기 차원에서 WOL을 지원하는 것도 있다지만..

겨우 이거 하나 때문에 사기는 뭐하니..

서브(P3 800Mhz, 384MB)컴퓨터에 XP를 설치하고

메인 컴퓨터에서 실행중이던 서버들을 모두 옮겼다.

이제 웹, FTP, 기타 자질구레한 서버들은 이녀석으로 실행한다 = ㅁ=;

그리고 PHP MANUAL을 뒤져가며 소켓관련 함수를 찾아가며 WOL 스크립트를 만들었다.

코드 내용은 어떻든 결과는 만족스럽다 = ㅁ=

사용자 인증 페이지를 만들고 클래스랑 연동하면된다.



'Distribute > etc.' 카테고리의 다른 글

[C#] 심플 웹서버 프로젝트  (3) 2012.09.02
Photoshop 7.0 웹용으로 저장 플러그인  (0) 2008.11.22
[JS] Net Transport의 IE 메뉴 확장 파일  (2) 2008.01.18
[VB] Clubbox Trayer v1.0  (0) 2007.08.12
Posted by 로드펭귄