Http 프로토콜 이미지 어떻게 구현하나요?
글쓴이: skpolice / 작성시간: 수, 2013/12/11 - 10:15오후
HTTP 프로토콜 웹서버를 구축 중에 있습니다.
간단한 글귀 띄우는 것은 했는데, 이미지와 파일을 어떻게 전송시켜야 될지 모르겠습니다.
핵심 기능 인데, 세션을 유지한 상태로 이미지와 파일을 전송 시키라던데, 어떻게 구현을 해야될지 모르겠습니다.. 태그와, 파일전송에 대한 자료를 못찾겠네요..한참 구글링도 해봤는데..
HTTP프로토콜도 한참 봤는데, 딱히 이미지와 파일전송 구현 그런것에 대해서 나와있지 않았구요...
베리즈웹쉐어 같은 프로그램 만들려는데, 시작 부터 떡하니 막히네요 흐...
그냥 소스코드 전송하고 클라이언트 연결 종료하는데, 이미지는 세션을 유지시키라던데,
그럼 종료시점이 어딘지 어떻게 추측하고 종료할 수 있는거죠??...
답변 부탁드리겠습니다 ㅠ !
Forums:
??
세션 유지라는게 keep-alive를 말하는 건가요???
보통 해더에 keep-alive가 있으면 response에 content-length많큼의 blob데이터를 쓴 후 다시 그 소켓을 통해서 바로 request를 받지요.
이미지 전송은 다른거 없고 그냥 mime 타입만 제대로 놓고 크기만큼 binary데이터 써주면 됩니다
자세한 내용은 그냥 rfc를 찾아보시는게;;
???
세션이란게 쿠키인지 keep-alive인지 잘 모르겠습니다.
쿠키(http 세션)인 경우에는:
httpd처럼 각 클라이언트에 대한 쿠키를 따로 파일로 관리하셔야 하구요. 그리 규모가 크지 않으면 프로그램 내부 변수로 관리해도 크게 상관은 없어요.
새로운 클라이언트가 들어오면 세션 부여해주고, 데몬 프로세스 하나 만들어서 만료된 세션들 파기도 시켜 줘야하구요.
keep-alive인 경우에는:
keep-alive의 종료시점(close)은 parameter입니다. 30초 300초 이렇게 정하는 거에요. 환경에 따라서, 요청이 긴 시간에 많이 이루어 진다면 길게 잡는게 좋아요.
그 "종료시점"이라는 게 한 파일의 전송의 끝을 뜻한 거라면, 그건 클라이언트에서 Content-Length로 판단하구요.
서버가 할일은 그냥 header하고 body만 잘 던져주면 됩니다. 그리고 커넥션 잘 닫아 주는거 하구요. (keep-alive라면 일정시간 기다린 후 close)
전송해야 하는 파일의 mime-type을 알아야 하는 경우에는 리눅스의 file 명령어 소스를 참조하세요 - http://www.darwinsys.com/file/
아니면 file명령어를 직접 사용해도 되구요 (file -bi)
혹은 php의 FileInfo 클래스를 사용하는 방법도 있구요 - http://www.php.net/manual/en/ref.fileinfo.php
http://en.wikipedia.org/wiki/List_of_HTTP_header_fields
http 응답 헤더 목록이에요.
응답에는 맨 위에 들어가는 상태코드 (HTTP/1.1 200 OK), Content-Type, Content-Length, Connection 정도가 필수라고 할 수 있겠네요.
댓글 달기