现在我用Client端和Server端建立一个Socket连接,我想实现如下几个功能:
1、如果Client端主动socket.close(),Server端如何判断Client端socket已经close()?Server端如何做出处理,且要继续监听,而不是因此而抛出异常。
2、如果Server端发现Client端是非法的(用户名错了,或登录IP有误),Server端如何把Client端的连接关闭,即踢出,而又继续保持监听?
谢谢!

解决方案 »

  1.   

    1)
    第一,可以事先判断isClosed() 
    第二,即使抛出异常,你仍然可以继续监听。把try放在循环之中即可。2)
    socket.close()应该就可以吧?
      

  2.   

    client 和server之间一旦建立连接,就会返回一个socket供你操作,你上述的1、2只要针对这个socket进行就都能够完成啊。
      

  3.   

    你可以这样做:
    1、当client登陆,验证是否合法,如果非法,返回一条信息,让client关闭socket。
    2、当client主动退出,可以向服务器发送一条退出信息,服务器先返回一条信息,让client关闭socket,同时停止socket.getInputStream.read方法。可以把read放在一个while方法,然后弄一个标志位
      

  4.   

    哈哈,jsjboss(沉珂)刚作过这类程序
      

  5.   

    我赞成"CalvinKyle(浮躁低能程序员)"的方法!
    "jsjboss(沉珂)"的做法我有点意见,如果CLIENT不是我们写的呢,它怎能根据SERVER的指令去执行呢,当然CLIENT退出时就更不会想服务端发一条指令了!谢谢
    Hima