在写了简单的socket通信之后,该开始封装了!废话少说,跟着思路走:
一、传输数据的封装
根据前几次的博客内容,我发现,客户端和服务器读和写的数据可以封装起来,统一叫做Packet。这样服务器和客户端通信就有了“规矩”,客户端不再是随随便便的来一个未知的字符串,让服务器懵逼很久。有了统一的格式,约定俗成,通信就方便快捷多了!
在包中,我们约定,每个包都有一个id值(对应packetId),命令号(对应command),内容(对应content)。上一篇博客说过,命令号,就对应一个请求。内容是包的主体部分。这只是一个抽象类,具体让实现类去实现。产生Packet的得有个类,叫PacketFactory.java吧!Packet是否发送成功,需要一个监听PacketListener.java。
具体代码我就不贴了,在文末链接去下载吧!
二、读写线程封装
客户端和服务器的读写线程都可以抽出来,建立两个类,分别是PacketWriter.java和PacketReader.java.虽然说实际项目中服务器的读写不需要我们管。但暂时还是得模拟下。
三、客户端的封装
在我看来,客户端与服务器通信就是一个连接。连接上了,就可以通信了,连接出现问题,就报错了。先建立一个接口叫Connection.java.有没有连接上得需要监听。所以说还得需要一个ConnectionListener.java.再写个抽象类,将socket中大多数共性方法写在里面。
四、实现封装的接口,继承抽象类,测试。
新建WPBPacket.java 实现Packet。新建WPBClientForMockServer.java继承抽象类。当然还得要有一个服务器了。