
网络编程Socket
文章平均质量分 59
分享基本网络编程过程
一枚小菜程序员
大家好,俺是 干啥啥不行,吃饭第一名,称霸幼儿园
展开
-
Reactor 模式
Reactor 翻译过来的意思是「反应堆」,可能大家会联想到物理学里的核反应堆,实际上并不是的这个意思。这里的反应指的是「对事件反应」,也就是来了一个事件,Reactor 就有相对应的反应/响应。事实上,Reactor 模式也叫 模式,我觉得这个名字更贴合该模式的含义,即 I/O 多路复用监听事件,收到事件后,根据事件类型分配(Dispatch)给某个进程 / 线程。Reactor 模式主要由 Reactor 和处理资源池这两个核心部分组成,它俩负责的事情如下:Reactor 模式是灵活多变的,可以应对不翻译 2022-06-04 21:36:27 · 7772 阅读 · 0 评论 -
Proactor 模式
一起看看 Proactor 模式的示意图: 介绍一下 Proactor 模式的工作流程:可惜的是,在 Linux 下的异步 I/O 是不完善的, 系列函数是由 POSIX 定义的异步操作接口,不是真正的操作系统级别支持的,而是在用户空间模拟出来的异步,并且仅仅支持基于本地文件的 aio 异步操作,网络编程中的 socket 是不支持的,这也使得基于 Linux 的高性能网络程序都是使用 Reactor 方案。而 Windows 里实现了一套完整的支持 socket 的异步编程接口,这套接口就是 ,是由操作系原创 2022-06-04 21:33:59 · 556 阅读 · 0 评论 -
理解 Reactor 和 Proactor 的区别
因此,Reactor 可以理解为「来了事件操作系统通知应用进程,让应用进程来处理」,而 Proactor 可以理解为「来了事件操作系统来处理,处理完再通知应用进程」。这里的「事件」就是有新连接、有数据可读、有数据可写的这些 I/O 事件这里的「处理」包含从驱动读取到内核以及从内核读取到用户空间。举个实际生活中的例子,Reactor 模式就是快递员在楼下,给你打电话告诉你快递到你家小区了,你需要自己下楼来拿快递。而在 Proactor 模式下,快递员直接将快递送到你家门口,然后通知你。...原创 2022-06-04 21:32:03 · 3763 阅读 · 0 评论 -
阻塞、非阻塞、同步、异步 I/O 的概念
先来看看阻塞 I/O,当用户程序执行 ,线程会被阻塞,一直等到内核数据准备好,并把数据从内核缓冲区拷贝到应用程序的缓冲区中,当拷贝过程完成, 才会返回。注意,阻塞等待的是「内核数据准备好」和「数据从内核态拷贝到用户态」这两个过程。过程如下图: 知道了阻塞 I/O ,来看看非阻塞 I/O,非阻塞的 read 请求在数据未准备好的情况下立即返回,可以继续往下执行,此时应用程序不断轮询内核,直到数据准备好,内核将数据拷贝到应用程序缓冲区, 调用才可以获取到结果。过程如下图: 注意,这里最后一次 read 调用,原创 2022-06-04 21:30:19 · 196 阅读 · 0 评论 -
理解网路编程 服务器端 套接字
此时套接字FD 只用于监听 不用于通信 只是监听client端是否有新的通信描述符过来accept函数接受⼀个客户端请求后会返回⼀个新的SOCKFD值,当有不同的客户端同时有不同请求时,会返回不同的SOCKFD的值。这个不同的值和建⽴SOCKET 时⽣成的SOCKFD还是不同的。服务器与客户端之间的通信就是在这些不同的SOCKFD上进⾏的。在服务器端,socket()返回的套接字⽤于监听(listen)和接受(accept)客户端的连接请求。这个套接字不能⽤于与客户端之间发送和接...原创 2022-05-15 15:26:04 · 409 阅读 · 0 评论 -
基于C/C++的最简单的网络编程(Server and Client)传输图片,文本等
1.初始化网络库bool init_Socket();bool init_Socket(){ WSADATA wsadata; if (0 != WSAStartup(MAKEWORD(2, 2), &wsadata)) // windows异步套接字 { printf("启动网络库失败 %d", WSAGetLastError()); return false; } return true;}2.创建服务器socketSOCKET create_s原创 2021-09-25 10:19:52 · 767 阅读 · 0 评论 -
UDP介绍,编程流程
介绍:面向无连接的用户数据报协议,不需要建立任何连接,目的主机接收后不需要确认UDP特点:相比TCP速度快一些 简单的应用程序直接使用 不需要加密 对于海量数据不采用UDP 广播和多播必须采用UDPUDP应用:DNS解析 NFS网络文件系统 RTP流媒体,以及一般语音和视频都是用UDPUDP网络编程流程:服务器: 创建套接字socket()将服务器的ip地址、端口号与套接字进行绑定bind()接收数据recvfrom()发送数据sendto()...原创 2021-12-13 22:07:27 · 2557 阅读 · 0 评论