JAVA为基于TCP协议开发提供了相关API,具体代码如下。
客户端:
服务端:
上述代码中,只建立一次请求,为实现双方多次交互,则需要加入循环处理;而且客户端发送数据和接受数据都在一个线程中,意味着客户端不发送数据就接受不了服务端返回的数据,因此他们需要在不同的线程中处理各自的业务。服务器端同理。
客户端实现多线程
发送数据线程:
接受数据线程:
客户端只需开启Send、Receive两个线程:
服务端实现群聊
群聊,将服务端作为中转站,转发所有客户消息给其他客户(不需转给自己)。因此,服务端需要管理所有的连接通道,每个通道封装数据信息以及对应的操作。
开启服务
私聊
要找到对应的用户进行私聊,需要对每个客户端进行唯一性标示,即创建客户端的时候指定用户名/ID并发送给服务端,服务端在创建对应的ChatChannel时,保存获取到的用户名/ID信息。而私聊的代码实现就是将信息转发到指定的ChatChannel连接通道中。
按照面向对象编程的思想,用户信息、消息本体都要封装成一个个的对象。