上一页 1 ··· 15 16 17 18 19 20 21 22 23 ··· 43 下一页

2019年6月14日

select实现超时(套接字IO超时设置)

摘要: 实现超时的三种方式: 1、SIGALARM信号 void handler(int sig) { return 0; } signal(SIGALRM,handler); alarm(5); int ret=read(fd, buf, sizeof(buf)); //可能会被打断 if(ret 1 & 阅读全文

posted @ 2019-06-14 10:54 wsw_seu 阅读(3059) 评论(0) 推荐(0) 编辑

2019年6月3日

close与shutdown

摘要: 首先看一个例子,如下图所示: 当我们客户端发送ABCD再close套接字的时候,服务器端的接收通道也被关闭了,将无法接收ABCD的数据。如果想要仅仅关闭发送通道,保留接收通道,可以使用shutdown。 一、close与shutdown 的区别: 1、close终止了数据传送的两个方向 2、shut 阅读全文

posted @ 2019-06-03 21:14 wsw_seu 阅读(837) 评论(0) 推荐(0) 编辑

2019年5月31日

select模型(二 改进服务端)

摘要: 一、 int select(int fds,fd_set *readfds,fd_set * writefds,fd_set * exceptfds,struct timeval * timeout);select 监管多个I/O,检测遍历[0,fds)的描述符,select实现的服务器称为并发(非 阅读全文

posted @ 2019-05-31 15:27 wsw_seu 阅读(170) 评论(0) 推荐(0) 编辑

2019年5月30日

select模型(一 改进客户端)

摘要: 一、改程序使用select来改进客户端对标准输入和套接字输入的处理,否则关闭服务器之后循环中的内容都要被gets阻塞。原程序中https://www.cnblogs.com/wsw-seu/p/8413290.html,若服务器端先关闭发送FIN,客户端处于CLOSE WAIT状态,服务端到FIN_ 阅读全文

posted @ 2019-05-30 17:42 wsw_seu 阅读(169) 评论(0) 推荐(0) 编辑

5种IO模型

摘要: 一、五种I/O模型: 阻塞I/O,非阻塞I/O,I/O复用模型,信号驱动I/O,异步I/O 前四种属于同步iO,最后一种属于异步IO。因为前四种真正的I/O操作将阻塞进程。异步I/O不导致请求被进程阻塞。由内核完成I/O操作。 1、阻塞IO 2、非阻塞IO 非阻塞IO,recv返回错误-1(EWOU 阅读全文

posted @ 2019-05-30 17:38 wsw_seu 阅读(220) 评论(0) 推荐(0) 编辑

2019年5月17日

tcpdump详解(转)

摘要: tcpdump是Linux下强大的抓包工具,不仅可以分析数据包流向,还可以对数据包内容进行监听。通过分析数据包流向,可以了解一条连接是如何建立双向连接的。tcpdump允许用户(一般是root)拦截和显示发送或收到过网络连接到该计算机的TCP/IP和其他数据包。 1 用法及常用参数一览 1 2 3 阅读全文

posted @ 2019-05-17 14:29 wsw_seu 阅读(578) 评论(0) 推荐(0) 编辑

2019年5月16日

CRC校验(转)

摘要: 1. CRC校验原理 假设数据传输过程中需要发送15位的二进制信息g=101001110100001,这串二进制码可表示为代数多项式g(x) = x^14 + x^12 + x^9 + x^8 + x^7 + x^5 + 1,其中g中第k位的值,对应g(x)中x^k的系数。将g(x)乘以x^m,既将 阅读全文

posted @ 2019-05-16 15:54 wsw_seu 阅读(840) 评论(0) 推荐(0) 编辑

2019年5月12日

wait函数与waitpid函数(僵尸进程)

摘要: 当子进程退出时,内核会向父进程发送SIGCHLD信号,子进程的退出是个异步事件(子进程可以在父进程运行的任何时刻终止) 子进程退出时,内核将子进程置为僵尸状态,这个进程称为僵尸进程。它只保留最小的一些内核数据结构,以便父进程查询子进程的退出状态。父进程查询子进程的退出状态可以用wait/waitpi 阅读全文

posted @ 2019-05-12 20:53 wsw_seu 阅读(704) 评论(0) 推荐(0) 编辑

2019年5月9日

UNIX系统编程:文件IO(I)

摘要: 1、标准C库中访问文件用的是文件指针FILE *(stdin,stdout,stderr);对于linux系统编程而言,所有对设备或文件的操作都是通过文件描述符进行的 2、当打开或者创建一个文件的时候,内核向进程返回一个文件描述符(非负整数),后续对文件的操作只需要通过文件描述符,内核记录有关这个打 阅读全文

posted @ 2019-05-09 15:08 wsw_seu 阅读(172) 评论(0) 推荐(0) 编辑

2019年5月8日

系统编程错误处理

摘要: 在系统编程中错误通常通过函数返回值来表示,并通过特殊变量errno来描述。errno这个全局变量在<errno.h>头文件中声明如下: extern int errno; 同时提供了两个错误处理函数:perror、strerror。 char * strerror(int errnum); //将错 阅读全文

posted @ 2019-05-08 15:41 wsw_seu 阅读(167) 评论(0) 推荐(0) 编辑

上一页 1 ··· 15 16 17 18 19 20 21 22 23 ··· 43 下一页

导航