作者qrtt1 (有些事,有时候。。。)
看板AndroidDev
标题Re: [问题] 有关socket inputstream和outputstream的问题
时间Wed Mar 14 23:26:07 2012
※ 引述《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