Http 프로토콜 이미지 어떻게 구현하나요?

skpolice의 이미지

HTTP 프로토콜 웹서버를 구축 중에 있습니다.
간단한 글귀 띄우는 것은 했는데, 이미지와 파일을 어떻게 전송시켜야 될지 모르겠습니다.
핵심 기능 인데, 세션을 유지한 상태로 이미지와 파일을 전송 시키라던데, 어떻게 구현을 해야될지 모르겠습니다..
태그와, 파일전송에 대한 자료를 못찾겠네요..한참 구글링도 해봤는데..
HTTP프로토콜도 한참 봤는데, 딱히 이미지와 파일전송 구현 그런것에 대해서 나와있지 않았구요...
베리즈웹쉐어 같은 프로그램 만들려는데, 시작 부터 떡하니 막히네요 흐...

그냥 소스코드 전송하고 클라이언트 연결 종료하는데, 이미지는 세션을 유지시키라던데,
그럼 종료시점이 어딘지 어떻게 추측하고 종료할 수 있는거죠??...

답변 부탁드리겠습니다 ㅠ !

익명 사용자의 이미지

세션 유지라는게 keep-alive를 말하는 건가요???
보통 해더에 keep-alive가 있으면 response에 content-length많큼의 blob데이터를 쓴 후 다시 그 소켓을 통해서 바로 request를 받지요.

이미지 전송은 다른거 없고 그냥 mime 타입만 제대로 놓고 크기만큼 binary데이터 써주면 됩니다
자세한 내용은 그냥 rfc를 찾아보시는게;;

MyAbby의 이미지

세션이란게 쿠키인지 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 정도가 필수라고 할 수 있겠네요.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.