没什么技术含量,将select模型做简单的封装,同时提供服务器端和客户端所用的接口。功能实现上对数据的发送和接收
都做了缓存,搞得跟异步IO一样 = =#。
这个例子聊天服务器可以使用telnet登录,服务器直接将telnet发来的字符串转发给所有客户端。我稍微写了一个小的网络
模块,可以用于以后写网络程序的例子代码,也算是练习下网络库的设计。
系统总体类图如下:
Address用于包装sockaddr_in结构体,目的就是让系统用起来更方便。
Buffer用于封装原始内存,主要目的是拿来做发送、接收数据缓冲。
Fdset差不多和FD_SET一样,只是这里自己写一个FD_SET,可以让连接数不受FD_SETSIZE的限制。
Socket封装了基本的SOCKET操作,包括创建、销毁套接字。
Session比较有意思,按我的意思,就是代表一个网络连接。对于服务器端,可能会有很多连接,每一个连接可以用一个
Session对象表示。而对于客户端,只有一个连接,那么就是一个Session对象。对于Session对象来说,可以进行数据的
发送和接收,因此这里Session有recv、send之类的接口。为了缓冲数据,所以Session对于读写分别有一个Buffer对象。
Server代表一个服务器,直接提供创建服务器的接口。同时使用一个unsigned long作为每一个连接的ID号。
Client代表一个客户端,可以直接用于连接服务器。
下载文件提供网络模块代码,以及三个例子程序。点击下载