做自己的Socket网络通信框架【设想篇】

    到了新的公司以后从以前做web转到做Socket网络通信方面,经过几个月的项目实践锻炼,自己的理解对 Socket网络通信开发框架有了一定的认识 ,所以决定自己做一个Socket网络通信框架,参考C++的ACE、Java的mina框架的设计设计思想。

     网络通信简单解释就是两台电脑之间的数据交换,一个作为服务器监听主机上的某个IP和端口,另一个电脑作为客户端连接服务器上的某个端口,然后两个主机建立连接后就互相发送和接收数据。

   具体设计思想如下 ,框架分为五个模块接收器、处理器、连接器 、过滤器、IO处理器、会话:

   接收器(acceptor): 作为服务器端,在服务器端的某些IP和端口上建立监听程序。

   处理器(processor): 框架的核心部分,接收socket连接请求、读写socket数据、socket事件通知业务层(socket建立、收到数据和 socket 关闭)。

   连接器(connector): 作为客户端,连接指定的服务器的端口。

   过滤器(filter): 不管是服务器还是客户端收到对方的数据以后,都需要一系列的处理,收到数据完整性检查、数据的解析、加解密、垃圾数据处理,业务数据处理等等,过滤器就是为此而设计的,不同的项目加载不同过滤器。数据按照事先设计好的过滤器顺序层层处理。

   IO处理器(IoHandler): socket通信协议的定义因项目不同而不同,如何去接受一个完整的数据报文,这个不太可能实现一个统一的功能,因此设计了一个IO处理器,定义一个IO接口,不同项目实现不同。

   会话(session): 过滤器之间传输数据,给对方发送数据等功能。


   作为服务器端来讲,首先需要在主机的某个IP和端口建立监听程序然后等待客户端的连接。 acceptor 负责在给定IP和端口上建立监听,然后把socket server的处理权移交给 processor, 当有客户端连接上来的时候, processor 把socket建立事件通知过滤器,当收到客户端发过来的数据, processor 把数据交给过滤器层层处理,当 socket关闭的时候 processor 把关闭事件通知给过滤器。

 

   作为客户端来讲,首先要和服务器建立一个网络连接,然后给服务器发送数据,或者等待服务器发送回来的数据。 connector 负责向指定IP和端口建立Socket连接,然后把 socket的处理权移交给 processor ,同时会建立一个和服务器的 session, 通过 session 可以向服务器发送数据,当服务器给客户端发送数据时, processor 把收到的数据交给过滤器层层处理, socket关闭的时候 processor 把关闭事件通知给过滤器。

 


  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值