摘要: 使用了 setsockopt函数,本例仅使用了读操作超时,若是想使用写操作超时使用SO_SNDTIMEO选项。读操作超时使用SO_RCVTIMEO. 阅读全文
posted @ 2017-11-19 15:53 颜小雀 阅读(853) 评论(0) 推荐(0)
摘要: 1 #include"apue.h" 2 typedef void Sigfunc(int); 3 //void (*signal(int signo,void (*func)(int)))(int); 4 static void connect_alarm(int); 5 int connect_timeout(int sockfd,(SA*)pserveraddr,socklen_... 阅读全文
posted @ 2017-11-19 15:14 颜小雀 阅读(352) 评论(0) 推荐(0)
摘要: 如果服务器没有及时的返回我们想要的内容,默认情况下recvfrom会永远阻塞的,直到服务器返回数据,这是对客户端是及其不友好的,所以必须加一个时间超时,如果在规定的时间内还是接收不到服务器传回来的数据,那么就停止阻塞。这是用信号实现的。 我设置了5秒的信号超时,如果在5秒前接收到了信息,那么就关闭这 阅读全文
posted @ 2017-11-19 14:52 颜小雀 阅读(1991) 评论(0) 推荐(0)
摘要: 1 #include "apue.h" 2 3 int main(int argc, char *argv[]) 4 { 5 int i,maxi,maxfd,listenfd,connfd,sockfd; 6 int nready,client[FD_SETSIZE]; 7 ssize_t n; 8 fd_set rset,allset; 9... 阅读全文
posted @ 2017-11-18 15:57 颜小雀 阅读(649) 评论(0) 推荐(0)
摘要: 这个服务器版本提供了accept返回EINTR错误继续执行的机制,保证了稳定性,而且其创建的子进程服务进程也会被正常的回收掉。 子进程结束会给父进程返回一个SIGCHID信号,父进程捕获到这个信号之后会执行信号处理函数,进行子进程的回收。 阅读全文
posted @ 2017-11-17 18:39 颜小雀 阅读(203) 评论(0) 推荐(0)
摘要: 函数原型: 第二个参数规定了内核应该为相应套接字排队的最大连接个数, 为了理解其中的backlog 参数,我们必须认识到内核为任何一个给定的监听套接字维护着两个队列! (1):未完成连接队列。每个这样的syn分节对应其中一项:已由某个客户发出到达服务器,而服务器正在等待完成相应的TCP三鹿握手的过程 阅读全文
posted @ 2017-11-16 22:54 颜小雀 阅读(1967) 评论(0) 推荐(0)
摘要: 1:不允许用户自定义新的运算符,只能对已有的运算符进行重载。 2:不能重载 . (成员访问运算符) *(指针) :: (域运算符) sizeof(长度运算符) ? : 3:重载不能改变操作数的个数。 4:不能改变优先级别 5:不可改变运算符的结合性 6:重载运算符的函数不可以有默认的参数。 7:重载 阅读全文
posted @ 2017-11-15 20:57 颜小雀 阅读(235) 评论(0) 推荐(0)
摘要: 编程时候需要用到struct timer_list 结构体。 阅读全文
posted @ 2017-11-09 13:03 颜小雀 阅读(377) 评论(0) 推荐(0)
摘要: http://note.youdao.com/noteshare?id=9d427c06f6d1fc7731b63bdec1c35320 笔记都在有道云上面了。 阅读全文
posted @ 2017-10-22 13:16 颜小雀 阅读(416) 评论(0) 推荐(0)
摘要: http://note.youdao.com/noteshare?id=b1dcc228aa1b8679cd60581b573a609a&sub=4F48F09433BF47019EC7F0F400AAA579 放在有道云上面了。 阅读全文
posted @ 2017-10-22 13:11 颜小雀 阅读(242) 评论(0) 推荐(0)