还是做TCP/IP的实验,因为要用到界面编程嘛,对于我这样的小菜有这么几种选择:
MFC,Swing
别的语言真心不太会了。
而MFC的东西感觉比Java要难,关键是我手里没有合适的帮助文档。
所以就用了Swt ,有的大牛可以用swing写出很漂亮的程序,
我还是感觉就我这实力还是用swt做点好看的吧。
那么很快就会遇到一个问题,当我执行到Socket.accept()时,整个窗口都卡住了,这就导致了我的界面非常不友好
后来想到了多线程,每当有请求的时候开启一个新的线程。这样窗口就一直会对事件进行响应了。
但是这里又有一个问题,关于阻塞:
Socket.accept()的时候,线程阻塞了,虽然不影响我的窗口,
但是我想通过窗口事件,来关闭这个线程,
怎么办呢?
有人推荐我用 interrupt 方法来中断线程,
恩,这种方法的确可以用,但只是线程因 sleep 或者是 wait 方法引起的阻塞才起作用
而我用的是 socket 引起的阻塞
所以这个不好用。
还有一些推荐 stop 等方法的,哪些已经被废弃了,即使好用也不推荐啊(我用的1.7,没找到这个方法,估计java已经放弃了这个方法了吧)
我用的方法是在阻塞源头产生异常,在截获异常的方法里,结束 run 方法。