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

04-02-13 tiger2005
我用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程序或者客户端就不好用了。

请高手指点!

1
banq
2004-02-16 16:53
NIO不同于以往Socket,带来架构的变化了。

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

tiger2005
2004-02-17 23:20
问遍了各大网站,还是您好心,能否给出提示?

前几天刚从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

tiger2005
2004-02-17 23:20
问遍了各大网站,还是您好心,能否给出提示?

前几天刚从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

banq
2004-02-17 23:29
可以catch到的,我以前做过,但是现在想不起来了,不用着急。

猜你喜欢
2Go 1 2 下一页