[問題] socket傳送圖片

看板C_and_CPP (C/C++)作者 (焚離)時間12年前 (2013/08/24 04:25), 編輯推噓1(1014)
留言15則, 7人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) GCC 問題(Question): 我使用了winsock2做一個簡單的web server, 其中我想要做出當瀏覽器對Server 去 GET 一張圖片(jpg 大小1KB) 理所當然我分析後需要串接資料在回應的封包中: HTTP/1.1 200 OK\r\n Server: ooxx\r\n Content-type: image/jpeg\r\n Content-Length: (圖片的大小[byte單位]) \r\n (圖片讀進來的二進位資料)\r\n 大概回應就長得像這樣 我想說圖片應該是類似二進位的檔案(我用fread去讀取) 所以我使用byte陣列去存圖片資料 並將它串接在回應後方後回傳給瀏覽器 但是問題來了,瀏覽器跑不出圖片 好像是在等待資料還是怎麼樣的.... 難道jpg無法以讀二進位檔案的方式讀取嗎? 還是我送出的東西少了什麼? 或是有更好的方法去傳送圖片? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.137.112.121 ※ 編輯: mabinogi805 來自: 220.137.112.121 (08/24 04:28)

08/24 09:51, , 1F
最後面似乎不需要\r\n 我用wireshark看到是這樣
08/24 09:51, 1F

08/24 18:50, , 2F
HTTP protocol 是需要 \r\n 的
08/24 18:50, 2F

08/24 18:50, , 3F
啊, 你是說最後面...不過 jpg 沒差
08/24 18:50, 3F

08/24 18:51, , 4F
這樣應該是中間的二進位資料有問題...
08/24 18:51, 4F

08/24 19:27, , 5F
自己用wireshark能看到正確的封包嗎?
08/24 19:27, 5F

08/24 19:50, , 6F
fopen有用b嗎?
08/24 19:50, 6F

08/24 21:28, , 7F
嗯,樓上說的可能就是原因了喔~
08/24 21:28, 7F

08/25 00:52, , 8F
我也覺得是這原因。你不要急著傳jpeg 你先傳傳看txt
08/25 00:52, 8F

08/25 00:52, , 9F
而且我總覺得你似乎少了一個\r\n
08/25 00:52, 9F

08/25 00:52, , 10F
你傳一個很長的txt看看 先看看結果
08/25 00:52, 10F

08/25 04:40, , 11F
fopen我確定有以rb的方式開啟了
08/25 04:40, 11F

08/25 04:44, , 12F
我傳了一個100KB的txt是可以在頁面上印出來的
08/25 04:44, 12F

08/25 04:44, , 13F
但是就連1KB的圖片也沒辦法顯示出來
08/25 04:44, 13F

08/25 04:46, , 14F
我中午再試試看好了
08/25 04:46, 14F

08/25 15:00, , 15F
謝謝各位的幫忙 我解決了 原因是我傳出去的大小錯誤
08/25 15:00, 15F
文章代碼(AID): #1I5yKn6V (C_and_CPP)
文章代碼(AID): #1I5yKn6V (C_and_CPP)