我有一個使用套接字獲取所有客戶端資料并發回資料的 http 服務器。我能夠成功地將 HTML 發送回客戶端(我的網路瀏覽器),但是每當我嘗試發送影像時,無論我發送什么影像,我都會得到一個小的白色方塊。
編碼:
#Generate and send response
def response(client, response = 200, headers, data)
client.print "HTTP/1.1 #{response.to_s}\r\n"
headers_s = ""
for h in headers do
headers_s = headers_s h "\n"
end
client.print "#{headers_s}\r\n"
client.print "\r\n"
client.print data.to_s
end
response(client, 200, ["Content-Type: image/png"], File.read("./very_cool_picture.png"))
我可能讀錯了影像,但我不確定。此外,即使使用正確的標頭,發送回其他二進制資料(例如可執行檔案)也無法正常作業。
還有更多我沒有展示的代碼,因為接受客戶端、決議請求等內容過多且無關緊要。
uj5u.com熱心網友回復:
\r\n標題和資料之間有額外的內容。在每個標題之后添加一個\n(應該真的是 a \r\n),然后在列印它們時添加另一個(client.print "#{headers_s}\r\n"),然后最后寫出另一個。這額外的兩個位元組導致瀏覽器看到無效的 PNG 資料。
洗掉該行client.print "\r\n"應該可以解決您的問題。
(您可能還應該發送一個 Content-Length 標頭,盡管沒有它仍然可以作業。)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/373204.html
上一篇:為什么我們需要在LL(1)語法決議器中設定FOLLOW?
下一篇:為什么在“java.net.ConnectException:連接被拒絕”之后出現“java.net.SocketException:Socketclosed”?
