http web server에서 그림전송 어떻게 하나요?

you의 이미지

http protocol을 잘 몰라서 질문합니다.
c로 웹서버를 구현해서 GET request에 대해서만
client로 전송해주는 간단한 서버입니다.
근데 전송해줄 html파일에 <img src="...">로 해서 그림을 첨부시킨 뒤에
서버를 돌리고,
client로 접속했더니 그림이 안보이더군요
(웹페이지에 그림부분에 X표시된거 있죠? 그렇게...)
웹페이지에서 그림을 꼭 보고싶은데...
아시는분 부탁좀 드립니다.
감사합니다.

realian의 이미지

http protocol 잘 모르고 web server 짜기가 만만치 않을꺼 같네요.
일단 프로토콜 공부를 좀 하셔야 할 듯 합니다..

간단히 말하면 client가 html 페이지를 받고
그 안에 있는 img 태그를 보면 그 src 의 내용으로 또다시 request를 보냅니다.
(물론 client를 직접 구현하셨다면 안하겠지요..
이 부분은 explore 등 일반적인 web browser를 말하는 것입니다)
그럼 web server는 그 request를 분석해서 binary 파일 전송을 해야 하구요.

request 형식이라든가 파일 보내주는 형식들
모두 protocol에 정의되어 있습니다. protocol 공부하시는 방법밖에 없네요.

..........No Sig.........|
-------------------+

adamas92의 이미지

html에서 이미지나 다른 html를 불러올때는 다시 request를 보내게 됩니다.
요청 html에 이미지가 2개 있으면 3번 request와 response가 생기는 거죠..
아마 만드신 웹서버가 한번만 받고 그냥 끊어버려서 이미지가 안뜨는 겁니다.

charsyam의 이미지

you wrote:
http protocol을 잘 몰라서 질문합니다.
c로 웹서버를 구현해서 GET request에 대해서만
client로 전송해주는 간단한 서버입니다.
근데 전송해줄 html파일에 <img src="...">로 해서 그림을 첨부시킨 뒤에
서버를 돌리고,
client로 접속했더니 그림이 안보이더군요
(웹페이지에 그림부분에 X표시된거 있죠? 그렇게...)
웹페이지에서 그림을 꼭 보고싶은데...
아시는분 부탁좀 드립니다.
감사합니다.

"클릭하세요 윈도우 네크워크 프로그래밍" - 대림출판사 책을 보면
HTTP Protocol 과 함께, 이미지 전송이 어떻게 되고, CGI 가 어떻게
실행되는지가 나옵니다. 그럼 고운 하루

=========================
CharSyam ^^ --- 고운 하루
=========================

fender의 이미지

그런 류의 프로그램에서 디버그하기 가장 좋은 방법 중하나는 HTTP 헤더를 직접 검사하는 것입니다. 모질라 플러그인이나 리눅스의 GET 명령어(--help를 참조하세요)를 이용해서 정상적으로 그림이 보이는 서버의 그림 경로를 요청했을 때 어떤 응답이 오는지 헤더를 분석해서 그대로 재현해주면 쉽게 웹서버를 구현할 수 있습니다.

----------------------------
[서명] 그놈 한국 사용자 모임 - 그놈에 대한 모든 것! - 게시판, IRC, 위키, 갤러리 등등...

likejazz의 이미지

Quote:
html에서 이미지나 다른 html를 불러올때는 다시 request를 보내게 됩니다.
요청 html에 이미지가 2개 있으면 3번 request와 response가 생기는 거죠..
아마 만드신 웹서버가 한번만 받고 그냥 끊어버려서 이미지가 안뜨는 겁니다.

그래서 조그만 이미지가 수십개 있는경우 실제 Data 영역보다 Request Header 영역이 더 큰 경우가 발생한다는 .. :wink:

--
Sang-Kil Park

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.