NIO Socket的2个问题?请高手帮忙!

我用NIO Socket写了一个服务器程序。
1.当我用Ctrl-C停止它时,屏幕显示抛出了一个java.io.IOException:system interrupted call,请问如何在程序中catch到它。如果是用以前的Net Socket写,按了Ctrl-C以后,屏幕上什么都不会出现程序就结束了。
2.用Windows的telnet访问它时,每一个字符输入都会触发服务器端的接受处理,而不是当一行输入完按回车以后再送到服务器端去。在Net Socket中因为采用BufferRead 的readline()处理不会有这样的问题。NIO Socket中用的是ByteBuffer,如何处理阿?我用了一个一个字符去判断,等有了回车符时再全部一起处理的方法,感觉不是一个有效的解决办法,因为换用其他telnet程序或者客户端就不好用了。

请高手指点!

NIO不同于以往Socket,带来架构的变化了。

你这两个问题很正常,是可以解决的。

问遍了各大网站,还是您好心,能否给出提示?
前几天刚从J道买了一套J2EE教程,还未来得及
拜读,现在正被这2个问题缠着呢。
还有一个问题是,有些例外在程序里抓不到。
比如如果PostgreSQL数据库没有启动,就运行服务程序,
会抛出一个例外:
org.postgresql.util.PSQLException: A connection error has occurred: org.postgresql.util.PSQLException: FATAL: the database system is shutting down
这个例外是不是已经被那个JDBC驱动给抓了,我的程序就抓不到了吗?
有没有解决办法呢?因为这样写出来的程序实在不够友好啊!
反正我用上了Exception都抓不到。

劳烦您了。

sogyoitu@yahoo.co.jp

问遍了各大网站,还是您好心,能否给出提示?
前几天刚从J道买了一套J2EE教程,还未来得及
拜读,现在正被这2个问题缠着呢。
还有一个问题是,有些例外在程序里抓不到。
比如如果PostgreSQL数据库没有启动,就运行服务程序,
会抛出一个例外:
org.postgresql.util.PSQLException: A connection error has occurred: org.postgresql.util.PSQLException: FATAL: the database system is shutting down
这个例外是不是已经被那个JDBC驱动给抓了,我的程序就抓不到了吗?
有没有解决办法呢?因为这样写出来的程序实在不够友好啊!
反正我用上了Exception都抓不到。

劳烦您了。

sogyoitu@yahoo.co.jp

可以catch到的,我以前做过,但是现在想不起来了,不用着急。

关于那个例外抓不到的问题是我在用Hibernate连数据库碰到的。
具体是这样的:
我在程序中用Hibernate提供的类连接PostgreSQL数据库:
SessionFactory sessions = new Configuration().buildSessionFactory();
结果是,如果数据库没有打开就运行程序,会在这个地方抛出一个例外:
org.postgresql.util.PSQLException: Connection refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
并且一直抛下去,是个无限循环。根本不让人抓啊。看来是Hibernate的
一个Bug。
还有那个Windows Telnet 的问题,我试着用了Windows提供的几种
console type: vt100, vt52, ansi, vtnt, 都不行。看来还得Java NIO
来解决这个问题。也许是Windows Telnet没做好,敲一个键就送出去。
Java IO 用的是BufferReader的readLine()来控制的,没有问题,但是NIO里都是ByteBuffer,CharBuffer什么的,什么时候也来个象readLine()一样的就好了。