随笔分类 -  UNIX网络编程

僵尸进程与SIGCHLD信号
摘要:什么是僵尸进程? 首先内核会释放终止进程(调用了exit系统调用)所使用的所有存储区,关闭所有打开的文件等,但内核为每一个终止子进程保存了一定量的信息。这些信息至少包括进程ID,进程的终止状态,以及该进程使用的CPU时间,所以当终止子进程的父进程调用wait或waitpid时就可以得到这些信息。 而 阅读全文

posted @ 2020-08-09 18:15 wsw_seu 阅读(333) 评论(0) 推荐(0) 编辑

select限制之文件描述符限制
摘要:1、一个进能够打开的最大文件描述符限制。可以通过两种方式修改ulimit -n :获取最大文件描述符个数ulimit -n 2048:修改为2048个 该限制的测试代码: 客户端程序: 服务器端程序: 阅读全文

posted @ 2019-06-17 16:36 wsw_seu 阅读(1723) 评论(0) 推荐(0) 编辑

select的限制
摘要:/*一、select实现并发服务器并发的两点限制 1、一个进能够打开的最大文件描述符限制。可以通过两种方式修改 ulimit -n :获取最大文件描述符个数 ulimit -n 2048:修改为2048个另外可以通过以下程序修改,利用 setrlimit 不能改父进程的限制,只能改当前进程和子进程能 阅读全文

posted @ 2019-06-14 12:09 wsw_seu 阅读(380) 评论(0) 推荐(0) 编辑

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 阅读(3193) 评论(0) 推荐(0) 编辑

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

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

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 阅读(172) 评论(0) 推荐(0) 编辑

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

posted @ 2019-05-30 17:42 wsw_seu 阅读(192) 评论(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 阅读(228) 评论(0) 推荐(0) 编辑

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 阅读(877) 评论(0) 推荐(0) 编辑

正向代理与反向代理【总结 转 侵删】
摘要:1、前言 最近工作中用到反向代理,发现网络代理的玩法还真不少,网络背后有很多需要去学习。而在此之前仅仅使用了过代理软件,曾经为了访问google,使用了代理软件,需要在浏览器中配置代理的地址。我只知道有代理这个概念,并不清楚代理还有正向和反向之分,于是赶紧学习一下,补充一下知识。首先弄清楚什么是正向 阅读全文

posted @ 2019-04-03 11:23 wsw_seu 阅读(148) 评论(0) 推荐(0) 编辑

TCP之Nagle算法&&延迟ACK
摘要:1. Nagle算法: 是为了减少广域网的小分组数目,从而减小网络拥塞的出现; 该算法要求一个tcp连接上最多只能有一个未被确认的未完成的小分组,在该分组ack到达之前不能发送其他的小分组,tcp需要收集这些少量的分组,并在ack到来时以一个分组的方式发送出去;其中小分组的定义是小于MSS的任何分组 阅读全文

posted @ 2018-03-18 12:15 wsw_seu 阅读(158) 评论(0) 推荐(0) 编辑

TCP/IP协议图解
摘要:联网的各个终端之间能否进行交互的软件基础是网络协议栈,目前主流的网络协议栈是TCP/IP协议栈。 1、主机到网络层协议:以太网协议 主机到网络层主要为IP协议和ARP协议提供服务、发送和接收网络数据报。本层中由于要实现跨网和跨设备的互通,有很多的实现方式,这里我们只关注以太网的实现方式。 以太网是由 阅读全文

posted @ 2018-03-04 14:58 wsw_seu 阅读(5223) 评论(0) 推荐(0) 编辑

多线程编写回射客户端程序
摘要:用多线程实现回射客户端程序 int pthread_detach(pthread_t thread); 客户端不变: 服务器端当有新连接到来的时候,新建一个线程,并且在这个线程的入口函数中来处理连接: 阅读全文

posted @ 2018-03-03 10:48 wsw_seu 阅读(134) 评论(0) 推荐(0) 编辑

http与https
摘要:HTTP缺省工作在TCP协议80端口,用户访问网站http:.//打头的都是标准的HTTP服务,HTTP所封装的信息是明文的,通过抓包工具可以分析其内容,如果这些信息是密码等,肯定会造成泄密。 而HTTPS可以加密敏感信息,缺省工作在TCP协议443端口,工作流程一般是: 1、TCP完成三次握手; 阅读全文

posted @ 2018-02-27 15:21 wsw_seu 阅读(326) 评论(0) 推荐(0) 编辑

HTTP请求中POST与GET的区别
摘要:一、原理区别 一般我们在浏览器输入一个网址访问网站都是GET请求;在FORM表单中,可以通过设置Method指定提交方式为GET或者POST提交方式,默认为GET提交方式。 HTTP定义了与服务器交互的不同方法,其中最基本的五种:GET,POST,PUT,DELETE,HEAD,其中GET和HEAD 阅读全文

posted @ 2018-02-27 14:56 wsw_seu 阅读(156) 评论(0) 推荐(0) 编辑

SIGPIPE信号
摘要:SIGPIPE往一个已经接收到FIN的套接中写是允许的,接收到的FIN仅仅代表对方不再发送数据。并不能代表我不能发送数据给对方。往一个FIN结束的进程中写(write),TCP 协议栈会发送一个RST TCP段过来,TCP重置。如果再调用write就会产生SIGPIPE信号 通常,我们只需要忽略这个 阅读全文

posted @ 2018-02-04 15:29 wsw_seu 阅读(6075) 评论(0) 推荐(0) 编辑

TCP11种状态
摘要:TCP的11种状态(还有一种CLOSING状态是两边同时发起close过程中才会有状态)nup的36页 连接建立的三次握手、终止四次握手。 socket创建套接口,默认是主动套接口。服务器端是被动套接口;服务器端收到客户端的SYN_SENT之后,仍处于阻塞状态。 TIME_WAIT要保留2MSL时间 阅读全文

posted @ 2018-02-04 15:25 wsw_seu 阅读(390) 评论(0) 推荐(0) 编辑

多客户连接僵尸进程的处理
摘要:什么是僵尸进程? 首先内核会释放终止进程(调用了exit系统调用)所使用的所有存储区,关闭所有打开的文件等,但内核为每一个终止子进程保存了一定量的信息。这些信息至少包括进程ID,进程的终止状态,以及该进程使用的CPU时间,所以当终止子进程的父进程调用wait或waitpid时就可以得到这些信息。 而 阅读全文

posted @ 2018-02-04 14:35 wsw_seu 阅读(254) 评论(0) 推荐(0) 编辑

gethostname(获取主机名)、gethostbyname(由主机名获取IP地址)
摘要:int gethostname(char *name, size_t len);获取本地主机名存入name[len],成功返回0,失败返回-1; struct hostent * gethostbyname(const char * hostname); //返回对应于给定主机名的包含主机名字和地址 阅读全文

posted @ 2018-02-04 13:25 wsw_seu 阅读(1372) 评论(0) 推荐(0) 编辑

点对点通信实例
摘要:实现点对点通信,双方都能发送数据、接收数据,双方维护套接字。read对方数据和read键盘输入目前使用两个进程来实现。 服务器进程: 客户端程序代码: 阅读全文

posted @ 2018-02-03 19:14 wsw_seu 阅读(1368) 评论(0) 推荐(0) 编辑

导航

< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8
点击右上角即可分享
微信分享提示