做自己的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 把关闭事件通知给过滤器。

 


  

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值