linux网络编程
文章平均质量分 52
youngchanlll
这个作者很懒,什么都没留下…
展开
-
状态服务器与无状态服务器(要点)
本文转载于:https://www.cnblogs.com/xingzc/p/6395891.html对于服务器程序来说,有个基本假设,即服务器是基于状态请求,还是基于无状态请求。根据这个假设,可以将服务器划分为状态服务器和无状态服务器。状态服务器如果是状态化请求,那么服务端一般需要保存请求的相关信息,每个请求可以默认地使用以前的请求信息。状态服务器具有以下特点:保存客户请求的数据(状态)服务端容易对客户状态进行管理服务端并不要求每次客户请求都携带额外的状态数据无状态服务器无状态服务器转载 2021-10-27 17:10:19 · 635 阅读 · 0 评论 -
Linux进程与线程的区别
本文转载于:https://my.oschina.net/cnyinlinux/blog/422207本文较长,耐心阅读,必有收获!进程与线程的区别,早已经成为了经典问题。自线程概念诞生起,关于这个问题的讨论就没有停止过。无论是初级程序员,还是资深专家,都应该考虑过这个问题,只是层次角度不同罢了。一般程序员而言,搞清楚二者的概念,在工作实际中去运用成为了焦点。而资深工程师则在考虑系统层面如何实现两种技术及其各自的性能和实现代价。以至于到今天,Linux内核还在持续更新完善(关于进程和线程的实现模块也是内转载 2021-10-27 07:59:58 · 1305 阅读 · 0 评论 -
进程池代码记录
注:本代码来源于《Linux高性能服务器编程》一书一、头文件processpool.h// filename: processpool.h#ifndef PROCESSPOOL_H#define PROCESSPOOL_H#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <cassert&原创 2021-10-27 07:44:55 · 180 阅读 · 1 评论 -
使用共享内存和共享内存映射区实现的聊天室服务器程序
一、关于代码中一些知识点的杂记1、mmap函数利用其MAP_ANONYMOUS标志可以实现父子进程之间匿名内存共享。通过打开一个文件,mmap也可以实现无关进程之间的内存共享。此处的服务器中提供了另外一种利用mmap在无关进程之间共享内存的一种方式,即先使用shm_open函数来创建或者打开一个POSIX共享内存对象,此POSIX共享内存对象的实现是通过tmpfs这个文件系统来实现的,tmpfs文件系的目录为/dev/shm,/dev/shm是驻留在内存 RAM 当中的,因此读写速度与读写内存速度一样,/原创 2021-10-19 19:08:59 · 583 阅读 · 0 评论 -
setsockopt用法详解
本文转载于:https://www.cnblogs.com/baiduboy/p/8127913.html最近做的一个程序用到了IOCP通信模型,里面用到了setsockopt对套接字进行设置,看源代码的时候最setsockopt函数很不理解,看了msdn以后还是不太明白这个函数的用法,于是就到网上找了一个这个函数的用法,找到了下面的这篇文章,我觉得对setsockopt这个函数讲解的特别号,就转过来了,方便以后的查阅。。1.closesocket(一般不会立即关闭而经历TIME_WAIT的过程)后想继转载 2021-08-13 10:27:39 · 3223 阅读 · 0 评论 -
关于本地套接字的使用
简述:本地套接字的使用与网络套接字的使用大体上是类似的,但是也存在一些区别,主要有(1)和套接字绑定的地址结构体不同,本地套接字使用的结构体是 struct sockaddr_un ,而网络套接字使用的是 struct sockaddr_in;(2)协议族不同,本地套接字使用的是AF_UNIX 或AF_LOCAL, 网络套接字常用的是AF_INET;(3)对于使用本地套接字的C/S模型,服务器和客户端都需要显式绑定套接字描述符和地址信息,即(1)中提到的存放地址信息的结构体;(4)用本地套接字的C/S模型原创 2021-07-30 11:44:32 · 441 阅读 · 0 评论 -
关于UDP的普通C/S模型、广播C/S模型以及组播C/S模型
简述:UDP与TCP一个主要的区别就是客户端与服务器之间不需要建立连接,即不经历三次握手过程。只需要主动发送数据的一方确定接收数据的一方的地址信息(IP地址+端口号),可以这么理解,数据的接收方要先确定自己用于接收数据的本地地址信息,即要显示绑定。作为接收数据的一方可以在接收数据的过程中获知对方的地址信息,然后通过获得的地址信息,向对方发送数据。一、普通C/S模型1、说明在普通的C/S模型中,客户端一般作为发起数据传输的主动方,即客户端会先发送数据,故客户端在发送数据前要先确定服务器的IP地址(这个原创 2021-07-29 16:56:28 · 312 阅读 · 0 评论 -
epoll 边沿触发的非阻塞连接读取数据代码记录
1 #include <cstdio> 2 #include <cstdlib> 3 #include <unistd.h> 4 #include <sys/socket.h> 5 #include <arpa/inet.h> 6 #include <sys/epoll.h> 7 #include <fcntl.h> 8 #include "wrap.h" 9 10 #define M..原创 2021-07-28 15:47:05 · 164 阅读 · 0 评论 -
(转载)epoll 反应堆模型代码
代码转载自:https://www.cnblogs.com/wanghao-boke/p/11443231.html 1 #include <cstdio> 2 #include <cstdlib> 3 #include <sys/epoll.h> 4 #include <sys/socket.h> 5 #include <arpa/inet.h> 6 #include <fcntl.h> 7 #includ转载 2021-07-28 15:34:24 · 131 阅读 · 0 评论 -
线程池代码记录
1、线程池思想线程池最主要的思想就是为了减少由于对资源的动态分配而引起的系统调用产生的耗时,即不在客户端需要连接时再创建线程,而是提前创建好一定数量的线程,等待对客户端连接的任务的处理,同时,线程的数量也并非是固定不变的,而是根据任务队列中任务的数量、现存线程数量以及处于繁忙状态线程数量等,来对线程的数量进行动态管理,适时增加或减少线程池中线程的数量。对任务的处理过程中用到了生产者与消费者模型,即有一个公共的任务队列区域,客户端生产任务,服务器负责把任务放到任务队列中,线程池中的线程则从任务队列中获取任原创 2021-07-28 10:15:00 · 149 阅读 · 0 评论 -
关于常用的I/O复用模型中epoll的使用代码记录
epoll使用的基本方法的代码: 1 #include <cstdio> 2 #include <cstdlib> 3 #include <unistd.h> 4 #include <cstring> 5 #include <arpa/inet.h> 6 #include <sys/epoll.h> 7 #include <errno.h> 8 #include <cctype>原创 2021-07-25 19:35:26 · 72 阅读 · 0 评论 -
关于常用的I/O复用模型中select函数和poll函数的使用代码记录对比
1、select函数的使用 1 #include <cstdio> 2 #include <cstdlib> 3 #include <unistd.h> 4 #include <cstring> 5 #include <sys/socket.h> 6 #include <arpa/inet.h> 7 #include <cctype> 8 #include "wrap.h" 9 10原创 2021-07-25 15:42:56 · 71 阅读 · 0 评论