随笔分类 - 课程 / 计算机网络 / C++网络
摘要:(一)I/O到底是什么? I/O 其实就是 input 和 output 的缩写,即输入/输出。 那输入输出啥呢? 比如我们用键盘来敲代码其实就是输入,那显示器显示图案就是输出,这其实就是 I/O。 而我们时常关心的磁盘 I/O 指的是硬盘和内存之间的输入输出。 读取本地文件的时候,要将磁盘的数据拷
阅读全文
摘要:一个 socket 是否设置为阻塞模式,只会影响到 connect/accept/send/recv 等四个 socket API 函数,不会影响到 select/poll/epoll_wait 函数,后三个函数的超时或者阻塞时间是由其函数自身参数控制的。 (一)原理分析 下面详细的解释,为了方便解
阅读全文
摘要:(一)epoll 交互过程 一个客户端和使用了 epoll 的服务端的交互过程如下图所示。 1.epoll 原理 (1)select 的问题 select 的问题在于描述符的限制,能监控的文件描述符最大为 FD_SETSIZE,对于连接数很多的场景就无法满足; 另外select 还有一个问题,每调用
阅读全文
摘要:一、BUFSIZ定义 Linux平台 stdio.h: #define BUFSIZ _IO_BUFSIZlibio.h: #define _IO_BUFSIZ _G_BUFSIZ_G_config.h: #define _G_BUFSIZ 8192 二、BUFSIZ作用 程序输出时,为减轻系统负担
阅读全文
摘要:功能描述:fcntl函数可以用来对已打开的文件描述符进行各种控制操作以改变已打开文件的的各种属性 文件控制函数 fcntl -- file control 头文件 #include <unistd.h> #include <fcntl.h> 函数原型 int fcntl(int fd, int cm
阅读全文
摘要:(一)初探 在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。 相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目
阅读全文
摘要:原文链接:EPOLL原理详解 从事服务端开发,少不了要接触网络编程。epoll作为linux下高性能网络服务器的必备技术至关重要,nginx、redis、skynet和大部分游戏服务器都使用到这一多路复用技术。 一、从网卡接收数据说起 下图是一个典型的计算机结构图,计算机由CPU、存储器(内存)、网
阅读全文
摘要:一、基础 (一)WSAEVENT 1.说明 WSAEVENT 类型本质上就是使用 CreateEvent 创建的 Event 对象: 2.有关原型 #define WSAEVENT HANDLE (二)WSA_MAXIMUM_WAIT_EVENTS 1.说明 事件对象句柄的最大数目 是WSA_MAX
阅读全文
摘要:(一)解析 在对一个进程的通信部分做分析时反复遇到了这四类函数,特做此记录。 LOWORD:取32位数的低16位 HIWORD:取32位数的高16位 LOBYTE:取16位数的低8位 HIBYTE:去16位数的高8位 ps:LOBYTE、HIBYTE应用于32位数时,会取32位数后16位数的高低8位
阅读全文
摘要:首先是需要的头文件和库: #include<WinSock2.h> #pragma comment(lib,"ws2_32.lib") Tcp连接的简单示例 一、服务器 主要流程及主要函数: 网络环境初始化:WSAStartup 创建服务器套接字:socket 绑定本机IP和端口:bind 监听客户
阅读全文