
网络编程
文章平均质量分 54
纵使微芒如烟
古人之观于天地、山川、草木、虫鱼、鸟兽,往往有得,以其求思之深而无不在也。夫夷以近,则游者众;险以远,则至者少。而世之奇伟、瑰怪,非常之观,常在于险远,而人之所罕至焉,故非有志者不能至也。
展开
-
Nginx内存池源码解读
首先解释一下Nginx内存池的结构:内存池接口概览//内存池创建,重置和销毁ngx_pool_t *ngx_create_pool(size_t size, ngx_log_t *log);void ngx_destroy_pool(ngx_pool_t *pool);void ngx_reset_pool(ngx_pool_t *pool);//内存分配void *ngx_pal...转载 2020-01-07 18:07:05 · 220 阅读 · 0 评论 -
Nginx的架构浅析
一个设计良好的软件,他的架构必然是高效和优秀的,这对性能和维护都很重要。Nginx的进程结构主进程执行特权操作,如读取配置和绑定端口,还负责创建子进程(下面的三种类型)。缓存加载进程(cache loader process)在启动时运行,把基于磁盘的缓存(disk-based cache)加载到内存中,然后退出。对它的调度很谨慎,所以其资源需求很低。缓存管理进程(cac...转载 2020-01-06 16:01:15 · 267 阅读 · 0 评论 -
windows重叠IO和IOCP简介
产生重叠IO的原因:对于阻塞IO的读写操作都是需要阻塞等待IO完成的,大大的浪费用户的进程的时间片,降低了程序的性能。所以系统开个后门,悄悄地给你开个后门,开个线程去帮你请求IO,等到IO操作完成之后再通知你,你就可一再接着处理就好了,那么在IO完成之前你就可以放心的做其他的了。重叠IO的重要数据结构:typedef struct _WSAOVERLAPPED { DWORD In...原创 2020-01-05 23:49:15 · 453 阅读 · 0 评论 -
nginx的安装
Nginx installNginx 安装系统平台:CentOS release 6.6 (Final) 64位。一、安装编译工具及库文件yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel二、首先要安装 PCREPCRE 作用是让 Nginx 支持 Rewrite 功能。1、下载 PCRE ...原创 2020-01-04 10:47:56 · 273 阅读 · 0 评论 -
我的Nginx学习笔记
nginx简介安装nginx···今天开个头原创 2020-01-04 10:39:14 · 144 阅读 · 0 评论 -
关于Http协议中的Range字段详解
个人空间(后台就是c/c++写的httpserver)=首先Range字段的作用是支持http协议的范围请求,而范围请求的用途多用于客户端多线程请求服务端某一资源,实现高效并发。扫描二维码看MDN文档对Http.Range字段的描述,应该比我写的好,或者Http协议的Range字段-----MDN然后我再说点我的踩的坑:一下是我的httpserver收到的...原创 2019-06-12 00:27:31 · 7976 阅读 · 1 评论 -
epoll十问之close
Q6 Will closing a file descriptor cause it to be removed from all epoll sets automatically? A6 Yes, but be aware of the following point. A file descriptor is a reference to an open file de...原创 2019-07-09 21:01:37 · 740 阅读 · 0 评论 -
epoll所涉及的结构体
epoll本身是依赖红黑树实现的。The event argument describes the object linked to the file descriptor fd. The struct epoll_event is defined as : typedef union epoll_data { void *p...原创 2019-07-09 21:14:48 · 574 阅读 · 0 评论 -
VS2019配置跨平台win-linux开发
在这里,悬着gdb就行了,gdbserver需要在linux端安装.调试->选项->跨平台最后,如果不行,在关掉当前项目,新建个linux空项目.提供一段测试代码:test1:#include <sys/epoll.h>#include <sys/socket.h>#include &...原创 2019-07-15 17:58:37 · 4942 阅读 · 0 评论 -
服务器压力测试
简单动手,写一个windows平台的服务器承压测试软件. 类似于apache的ab.#include<iostream>#include<atomic>#include<thread>#include<condition_variable>#include<mutex>#include<stdlib.h>...原创 2019-07-15 23:38:00 · 814 阅读 · 0 评论 -
关于配置文件 /etc/sysctl.conf配置文件的说明和ab的配置关系.
配置文件/etc/sysctl.conf的内容如下:查看应用服务器和数据库均未报错,连接被重置,bingyi了以下,apr_socket_recv这个是操作系统内核的一个参数,在高并发的情况下,内核会认为系统受到了SYN flood攻击,会发送cookies(possible SYN flooding on port 80. Sending cookies),这样会减慢影...原创 2019-08-03 00:19:00 · 1676 阅读 · 0 评论 -
Server design浅析
服务器的设计方案:(1)派生子进程:parent process send socket to child process.其实也是可以父进程和子进程共享一个数据结构(socket list...),来进行传递socket.(2)(3)(4)中的listenfd的进程间的传递:有点和windows的句柄表的作用有点像....原创 2019-06-03 23:45:16 · 198 阅读 · 0 评论 -
SO_RCVTIMEO超时errno
首先打印一次recv调用失败的errno值和各个宏的值.由上可知,EAGIN和EWOULDBLOCK的值都是11,其实EAGIN是在setsockopt设置SO_RCVTIMEO或SO_SNDTIMEO后,recv或者send系列函数超时等待返回-1,此时的errno值。EWOULDBLOCK则是大家熟悉的异步调用产生的errno。recv return -1,errn...原创 2019-06-03 23:44:10 · 890 阅读 · 0 评论 -
socket__02________accept()
inet_ntoa(addr_in param);//返回一个指针,指向ip串,失败为null //思考,ip地址串保存在哪里?int ret = accept(int sock,sockaddr_in *sockaddr,int len);://len传入sockaddr_in的结构长度 //ret返回一个socket套接字,鱼客户端请求连接注意:...原创 2018-05-16 20:08:16 · 149 阅读 · 0 评论 -
telnet
netstat和telnet命令在Windows7中的用法在网络方面我们常常会用到如下命令:(1)ping命令:我们常常用来判断2台或2台以上的机器间是否网络连通。 ping 192.168.1.88 -t &...转载 2018-05-16 21:04:25 · 10304 阅读 · 0 评论 -
accept
winsock.h:SOCKET PASCAL FAR accept ( _In_ SOCKET s, _Out_writes_bytes_opt_(*addrlen) struct sockaddr FAR *addr, _Inout_op...原创 2018-06-30 18:05:59 · 883 阅读 · 0 评论 -
socket options(一)
功能描述:获取或者设置与某个套接字关联的选 项。选项可能存在于多层协议中,它们总会出现在最上面的套接字层。当操作套接字选项时,选项位于的层和选项的名称必须给出。为了操作套接字层的选项,应该 将层的值指定为SOL_SOCKET。为了操作其它层的选项,控制选项的合适协议号必须给出。例如,为了表示一个选项由TCP协议解析,层应该设定为协议 号TCP。用法:#include#includeint...转载 2018-10-22 14:42:49 · 2328 阅读 · 0 评论 -
如何判断socket是否还处于连接状态?
在处于socket IO异步中recv的返回值 ==0 ?不能作为判定socket状态的标志心跳包可不可以在Client设一个定时器,每隔一段时间发一条消息给服务器,看能不能收到服务器的响应。心跳包就是定时发包,没回应就判断断开。getsockoptint optval, optlen = sizeof(int);getsockopt(sd, SOL_SOCKET, SO_ER...原创 2018-10-22 15:20:21 · 24901 阅读 · 0 评论 -
关于network IO模型
from:https://blog.youkuaiyun.com/historyasamirror/article/details/5778378 当你发现自己最受欢迎的一篇blog其实大错特错时,这绝对不是一件让人愉悦的事。《 IO - 同步,异步,阻塞,非阻塞》是我在开始学习epoll和libevent的时...转载 2018-10-26 19:25:23 · 539 阅读 · 0 评论 -
MAC
转载于:https://zhidao.baidu.com/question/416475673.htmlMAC地址和人的身份证一样,可以在设路由的时候绑定你的MAC地址。简单点说。是每一个网上的唯一的地址。MAC地址也叫物理地址、硬件地址或链路地址,由网络设备制造商生产时写在硬件内部。MAC地址的作用 IP地址就如同...转载 2018-11-04 15:54:45 · 167 阅读 · 0 评论 -
URL编码
以下是url中可能用到的特殊字符及在url中的经过编码后的值: 特殊字符的含义 URL编码 # 用来标志特定的文档位置 %23 % 对特殊字符进行编码 %25 & 分隔不同的变量值对 %26 + 在变量值中表示空格 ...原创 2019-06-03 23:34:26 · 1906 阅读 · 0 评论 -
http中的SIGPIPE处理
问题描述:在我实现http1.1 server的过程中,当客户端和浏览器存在数据传输时,如果客户端断开连接(浏览器刷新或关闭),我的服务器就总是崩溃。求思:程序异常退出,首先查看进程退出码echo $?然后分析退出码结果分析:由此可知,我的进程异常退出的原因是由于客户端连接服务器传数据过程中,客户端断开连接,导致s...原创 2019-06-03 23:41:57 · 215 阅读 · 0 评论 -
socket__01
小结下windows的socket的使用流程1.服务端: 我们的服务端主要功能是等待用户连接,给连接用户提供服务 所以我们必须形成一个互联网可见的节点(整个internet的唯一节点:ip+port) 所以在服务端我们必须明确生成一个节点(必须为service绑定port)2.客户端 在客户端需要的时候向服务端发起连接,请求服务 所以客户端是可...原创 2018-05-17 20:40:38 · 198 阅读 · 0 评论