PrintStream在网络编程中的弊端

     第一,println()的输出是与平台有关的。取决于运行代码的机器,各行有时用换行分隔,有时用回车,或者用回车/换行对。写入控制台不会产生问题,但对于遵循准确协议的网络客户端和服务器而言,这却是个大灾难。大多数网络协议,指明应当由回车/换行对结束。使用println()很容易编写出能正常工作于windows的程序,但却不能在UNIX和MAC下工作。虽然许多服务器和客户端能够“慷慨”的接受处理不正确的行结束符,但偶尔也有例外,运行于Mac OS 9的客户端如果使用println()会使服务器和客户端挂起。在某种程序上,这可能通过只使用print()并忽略println()来修复。

    第二,PrintStream 打印的所有字符都使用平台的默认字符编码转换为字节。但是,这种编码方式可能不是服务器和客户端所期望的。在需要写入字符而不是写入字节的情况下,应该使用 PrintWriter 类。

    第三,PrintStream吞掉了所有异常。对于网络连接而言是不够的。

                                                                                     

引自:Elliotte Rusty Harold《java网络编程》

猜你喜欢

转载自blog.csdn.net/wh2000292/article/details/3744755