开发平台: linux,ubuntu
开发工具: gedit
开发语言: c/c++, uc
使用技术: 进程,管道,共享内存,套节字,信号,文件
项目描述: 建立CSocket类,封装了套节字的创建,绑定,监听,关闭。CEpoll_event类,封装了内核事件表的创建,事件集,
控制,添加,销毁,监听事件,建立文件文件描述符控制类CFileDescriptorCtl,负责将套节字或者管道等等其他文件描述
符,需要设置为非阻塞的,设置为非阻塞,该实例采用epoll的边缘触发,而不是电平触发,当有信号发出的时候,为了避
免信号处理函数时间过长,而导致操作系统过长的不再发出该信号,采用管道在信号处理函数里在写端写入信号,在管道
里将信号送给主进程,让主进程处理,这样就可以避免操作系统过长时间不再发送该信号,然后向内核事件表中注册相应
的事件,然后用CEpoll_Event中的事件监听成员函数,监听事件,然后根据事件作出相应的处理,当监听到当有连接接入的
时候,接受连接,fork子进程,让子进程处理该连接,然后在子进程中创建一个套节字管道(全双工),负责父子进程通信,
然后再
在主进程中创建一块内存。用于共享数据(mmap), 然后,子进程中也采用epoll的边缘触发模式,监听该事件表中的事件
当EPOLLIN事件被触发的时候,接受数据,将其存到相应的共享数据然后通过套节字管道,发送该内存的标识,由主进程
负责向除本身连接的其他连接发送内存标识,然后其他子进程,就根据该标识拿到数据,发送到相应的客户端
心得体会: 体会了epoll,管道,内存等一些的使用,感觉这是一个模板,不同的是发送的数据。
开发工具: gedit
开发语言: c/c++, uc
使用技术: 进程,管道,共享内存,套节字,信号,文件
项目描述: 建立CSocket类,封装了套节字的创建,绑定,监听,关闭。CEpoll_event类,封装了内核事件表的创建,事件集,
控制,添加,销毁,监听事件,建立文件文件描述符控制类CFileDescriptorCtl,负责将套节字或者管道等等其他文件描述
符,需要设置为非阻塞的,设置为非阻塞,该实例采用epoll的边缘触发,而不是电平触发,当有信号发出的时候,为了避
免信号处理函数时间过长,而导致操作系统过长的不再发出该信号,采用管道在信号处理函数里在写端写入信号,在管道
里将信号送给主进程,让主进程处理,这样就可以避免操作系统过长时间不再发送该信号,然后向内核事件表中注册相应
的事件,然后用CEpoll_Event中的事件监听成员函数,监听事件,然后根据事件作出相应的处理,当监听到当有连接接入的
时候,接受连接,fork子进程,让子进程处理该连接,然后在子进程中创建一个套节字管道(全双工),负责父子进程通信,
然后再
在主进程中创建一块内存。用于共享数据(mmap), 然后,子进程中也采用epoll的边缘触发模式,监听该事件表中的事件
当EPOLLIN事件被触发的时候,接受数据,将其存到相应的共享数据然后通过套节字管道,发送该内存的标识,由主进程
负责向除本身连接的其他连接发送内存标识,然后其他子进程,就根据该标识拿到数据,发送到相应的客户端
心得体会: 体会了epoll,管道,内存等一些的使用,感觉这是一个模板,不同的是发送的数据。