client 纯粹的客户端 具有 接受和发送两种功能
注意点:1 因为两种功能之间互相不干扰,因此其中一个必须放在独立的线程里。
2 因为接受以及发送都是一直不间断的 所以两者都必须放在死循环里
3 线程的start 不能放在另一个功能循环里,并且必须放在另一个循环之前(因为大家都是死循环,写在后面运行不到)
4 尽量不要多次实例化流,能提出来就提出来
server和customer server是单纯的服务器 只需要具备接受客户端的功能 但是通过new对象跳转customer,本质上server和customer在一个主线程里。
通过customer来实现数据的转发
1 customer转发功能实质是 先接收A客户端发来的信息,然后把A信息中的ip单独取出来,用for遍历clients来查找匹配ip所对应的B客户端
再把A信息中的信息内容content发送给B
2 因为接受的服务器不止一个,因此customer中对数据的转发功能必须单独放进一个线程,否则会发生只能进一个客户端的情况。
3 接收转发的线程也需要把代码写在死循环里
release 将server socket bw br 四种东西的close方法提出来,并且重载调用