ndfs:select需要监视的文件句柄数,视进程中打开的文件数而定,一般设为需要监视各文件中的最大文件号加1。
readfds:select()监视的可读文件句柄集合。
writefds:select()监视的可写文件句柄集合。
exceptfds:select()监视的异常文件句柄集合。
timeout:本次select()的超时结束时间。(见/usr/sys/select.h,可精确至百万分之一秒。)
当readfds或writefds中映象的文件可读或可写或超时,本次select()就结束返回。程序员利用一组系统提供的宏在select()结束时便可判断哪一文件可读或可写。对Socket编程特别有用的就是readfds。
几个相关的宏解释如下:
FD_ZERO(fd_set*fdset):清空fdset与所有文件句柄的联系。
FD_SET(int fd,fd_set*fdset):建立文件句柄fd与fdset的联系。
FD_CLR(int fd,fd_set*fdset):清除文件句柄fd与fdset的联系。
FD_ISSET(int fd,fdset*fdset):检查fdset联系的文件句柄fd是否可读写,>0表示可读写。(关于fd_set及相关宏的定义见/usr/include/sys/types.h)
这样,socket只需在有数据读的时间才读入,大致如下:
所以一个FD_ISSET(sockfd)就相当于通知了sockfd可读。
结语
基于AT91RM9200的智能综合监控基站具有性能稳定可靠,集成化智能化程度高,无需专人看管,可扩展性好,资源利用率高等明显优点。因此,开发基于AT91RM9200的智能综合监控基站具有较高的技术先进性和广阔的市场前景,是一件非常有意义的事情。
上一篇:TD-LTE毫微微蜂窝基站测试