Re: [問題] 有關socket inputstream和outputstream的問題
※ 引述《Killercat (殺人貓™)》之銘言:
: 正好有人在問這個,似乎也沒有人回答
: 我就我所知的來回答下好了
: 我先簡要的說一下原因,internet protocol用來分隔的是CRLF(\r\n) 以及CRLFCRLF
: (後者用以區隔header跟content)
: PrintWriter的println
: (以及所有stream family的println, 比方說PrintStream)
: 所傳出的分隔都是依系統而變
: 珍惜生命 遠離println / printstream(全文完)
: -
: p.s. 你的out沒flush
: ※ 發信站: 批踢踢實業坊(ptt.cc)
: ◆ From: 123.192.252.25
: 基本上看到這裡應該就夠了,下面是比較詳細的說明
: 換行(也就是println會幫你做的事情)會幫你插入一個換行符號
: 而這個換行符號在各個系統都不一樣,所以基本上各個系統輸出都不同
: 比方說Windows就是CRLF(難得反而windows是正統的) 而unix系的含OSX絕大多數都是CR
: 這是java少數幾個無法跨平台的地方,你可以想像一下同樣一串碼
: out.println("This is SPARTA!");
: 其實在Windows底下是輸出
: This is SPARTA!\r\n
: 而Unix系卻是
: This is SPARTA!\r
: 這個println如果是輸出到螢幕上的話,沒差,大家看起來都一樣
: 阿輸出到socket就有差了,後者readline會根本讀不到
: 那當然照慣例就要問了:那要怎麼辦?
: 簡單,out.print("This is SPARTA!\r\n");
: 當然還有另外一個錯誤就是你沒有out.flush();
: 請銘記在心,寫Java Socket程式絕對要遠離任何println/printstream
: 看到他請當瘟神一樣離開他
: 謝謝觀賞(有人只看到上面嗎XD)
把重要的事藏在後面,可能會有很多人沒看到呦。
雖然只有二句,但不想推文。因為這樣推文也可能被忽略了xd
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.231.55.154
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 4 篇):
AndroidDev 近期熱門文章
PTT數位生活區 即時熱門文章