唉,这学期前几天看了一点java  socket,然后仿照书上的程序做了一个网络五子棋,一局下来没问题,但想再来一局就出问题了,怎么也找不出问题出在哪,弄了半个月都弄不好,成了这学期的遗憾啊。现把程序发上来,求耐心的前辈帮忙看一下问题出在哪,程序很长,耐心看者,100分的回报,谢谢。第一局结束后,随便某一方选择“菜单———新游戏”或者“菜单————结束当前游戏”,然后另一方同意就可意继续下一局了,选择“新游戏”和“结束新游戏”的功能实际是一样的,都是重新开始新的一局,但选择两者,错误还不一样,郁闷。
http://blog.csdn.net/jqctop1/article/details/6612795多谢大家的帮助了。

解决方案 »

  1.   

    看了一下程序,发现一点小问题,请LZ看看对不对
    1.NewGameTask里面的流通信在对局结束后未关闭,然后NewGame的话又重新注册player1和player2这两个Socket的监听,这样会有问题;
    2.player申请结束当前局的时候没有把之前生成的NewGameTask的线程停止(粗略看了一下貌似是这样),这样导致了跟上面那个同样的问题,更麻烦的是,有两个处理游戏的NewGameTask的线程在跑,肯定会出问题。个人意见,供LZ参考
      

  2.   

    主要问题出在,对Socket的重复监听
      

  3.   

    本人初学JAVA 希望有一天也能像楼主一样能写出自己想要的东西
      

  4.   

    楼主有时间的话可以看看这个java联网版五子棋:http://download.csdn.net/source/3263888