摘要: 将http://www.cnblogs.com/nufangrensheng/p/3590002.html中的select改用poll。 intmain(int argc, char **argv){ int i, maxi, listenfd, connfd, sockfd; int nr... 阅读全文
posted @ 2014-03-09 16:47 ITtecman 阅读(324) 评论(0) 推荐(0) 编辑
摘要: poll函数提供的功能与select类似,不过在处理流设备时,它能够提供额外的信息。 poll函数原型 #include int poll(struct pollfd *fdarray, unsigned long nfds, int timeout);返回:就绪描述字的个数,0——超时,-1——出错poll函数参数介绍第一个参数是指向一个结构数组第一个元素的指针。每个数组元素都是一个p... 阅读全文
posted @ 2014-03-09 16:12 ITtecman 阅读(769) 评论(0) 推荐(0) 编辑
摘要: 函数原型 pselect函数是由POSIX发明的,其原型如下: #include #include #include int pselect (int maxfdpl, fd_set *readset, fd_set *writeset, fd_set *exceptset, const struct timespec *timeout, const sigset_t *s... 阅读全文
posted @ 2014-03-09 15:25 ITtecman 阅读(545) 评论(0) 推荐(0) 编辑
摘要: 拒绝服务型攻击的概念 当一个服务器在处理多个客户时,它绝不能阻塞于只与单个客户相关的某个函数调用。否则可能导致服务器被挂起,拒绝为所有其他客户提供服务。这就是所谓的拒绝服务(denial-of-service)型攻击。它就是针对服务器做些动作,导致服务器不再能为其他合法客户提供服务。 拒绝服务型攻击的解决办法 (1)使用非阻塞I/O。 (2)让每个客户由单独的控制线程提供服务(例如创建一个... 阅读全文
posted @ 2014-03-09 14:51 ITtecman 阅读(313) 评论(0) 推荐(0) 编辑
摘要: 改写http://www.cnblogs.com/nufangrensheng/p/3587962.html中的TCP回射服务器程序,把它重写成使用select来处理任意数目个客户的单进程程序,而不是为每个客户派生一个子进程。 int main(int argc, char **argv){ int i, maxi, maxfd, listenfd... 阅读全文
posted @ 2014-03-09 14:38 ITtecman 阅读(474) 评论(0) 推荐(0) 编辑
摘要: 终止网络连接的通常方法是调用close函数。不过close有两个限制,却可以使用shutdown来避免。 close 把描述字的引用计数减1,仅在该计数变为0时才关闭套接口。使用shutdown可以不管引用计数就激发TCP的正常连接终止序列(由FIN开始的四个分节). close 终止数据传送的两个方向:读和写。既然TCP连接是全双工的,有时候我们需要告知对端我们已经完成了数据发送,即使对端仍... 阅读全文
posted @ 2014-03-09 13:01 ITtecman 阅读(370) 评论(0) 推荐(0) 编辑
摘要: 我们可以使用select函数重写http://www.cnblogs.com/nufangrensheng/p/3587962.html中的str_cli函数,这样服务器进程一终止,客户就能马上得到通知。早先那个版本的问题在于:当套接口上发生某些事件时,客户可能阻塞于fgets调用。新版本改为阻塞于select调用,等待要么标准输入可读,要么套接口可读。下图展示了调用select所处理的各种条件。... 阅读全文
posted @ 2014-03-09 12:29 ITtecman 阅读(1157) 评论(0) 推荐(0) 编辑
摘要: select函数概况: select函数允许进程指示内核等待多个事件中的任何一个发生,并仅在有一个或多个事件发生或经历一段指定的时间后才唤醒它。 作为一个例子,我们可以调用select,告知内核仅在下列情况发生时才返回: (1)集合{1,4,5}中的任何描述字准备好读,或 (2)集合{2,7}中的任何描述字准备好写,或 (3)集合{1,4}中的任何描述字有异常条件待处理,或 (4)已经... 阅读全文
posted @ 2014-03-09 10:52 ITtecman 阅读(1226) 评论(0) 推荐(0) 编辑
摘要: 桶式排序算法描述: 如果我们有N个整数,范围从1到M(或从0到M-1),我们可以利用这个信息得到一种快速的排序,叫做桶式排序(bucket sort)。我们留置一个数组,称之为Count,大小为M,并初始化为零。于是,Count有M个单元(或桶),开始时他们都是空的。当Ai被读入时,Count[Ai]增1。在所有的输入被读进以后,扫描数组Count,打印输出排好序的表。该算法花费O(M+N)。引... 阅读全文
posted @ 2014-03-09 09:07 ITtecman 阅读(1553) 评论(0) 推荐(0) 编辑