(原)
第三篇,客户端与服务端通信
以下例子逻辑:
如果客户端连上服务端,服务端控制台就显示,XXX个客户端地址连接上线。
第一个客户端连接成功后,客户端控制台不显示信息,再有其它客户端再连接上线,则其它客户端显示:【服务器】 - XXX 已加入
当客户端发送一条消息给服务端,其它客户端控制台都能收到此消息【服务端】 - xxx msg,同时自己也会收到一条消息,【服务端】 - 【自己】 msg
服务端ChannelInitializer和SimpleChannelInboundHandler实现为:
这里的channelGroup这管道组,在客户端关掉后,服务端会自动调用handlerRemoved方法,channelGroup的remove方法会自动调用,将对应的客户端从channelGroup中移除,所以这里不必显示的移除。
客户端main 和SimpleChannelInboundHandler实现为:
因为客户需要将控制台输入参数发送出去,所以这里用了while死循环
测试结果
先开启服务端,再开启二个客户端,第一个客户端输入hello
服务端:
客户端1:
客户端2: