C/C++Linux网络编程
自己学习Linux网络编程经验分享
译制片~
好好生活,好好学习
展开
-
基于libevent库的TCP C/S模型
服务端代码:/************************************************************************* > File Name: server.c > Author: chencj > Mail: 1378755306@qq.com > Created Time: 2020年08月17日 星期一 17时50分07秒 *************************************************原创 2020-08-18 16:54:58 · 256 阅读 · 0 评论 -
linux本地套接字--tcp,udp实现
本地套接字顾名思义就是用于本地通信的套接字,虽然网络套接字也能用于本地通信(通过本地回环测试127.0.0.1),但是还是需要绑定IP地址和端口号,这就没有本地套接字通信那么简便了。但是需要注意的事在客户端需要建立两个地址结构, 一个是定义自己的,一个是标注目的服务端的,而且是绝对路径,这样在服务端接收数据的时候就知道是哪个客户端伪文件传来的,不然的话打印不出来绝对路径。bind创建出来的文件就是伪文件(套接字文件),这个文件的大小是0,可以说就是一个棋子。/虽然在很多教材中经常把Unix本地套接字放在网原创 2020-08-15 16:49:30 · 564 阅读 · 0 评论 -
/*Linux下的线程池*/
线程池听名字很好理解,就是把多个线程放在一个池里面,然后做相应的操作。在线程池中 我们会再开始的时候创建一个最小线程数,然后往线程池里面添加或者销毁线程我们通过一个主导线程进行管理。对线程公共的资源我们引入了互斥锁进行制约,当线程池里面的任何一个线程访问该资源的时候都要进行加锁解锁操作,这样能有效的使得每个线程正确的获得该资源不会发生混乱。还有每个线程要做的任务,这里我们有一个任务队列配合着线程,有任务就交给空闲的线程进行处理。如果不引入线程池,而是来一个任务就创建一个线程的话这样的效率是很低的,CPU的资原创 2020-08-15 09:24:52 · 87 阅读 · 0 评论 -
Linux下的epoll反应堆
epoll是select/poll的增强,在Linux下经常应用于高并发服务程序,epoll对于那些有大量并发连接但是只有很少部分活跃的情况下是很有用的,因为活跃的连接在epoll_wait会返回一个数值,这个数值就是活跃连接的数量。如果返回0就说明没有客户端进行连接,反之就要依次处理这些客户端。epoll最高效的方式就是epoll ET模式 + 非阻塞 i/o,也就是epoll反应堆模型。关于epoll更详细的讲解戳这里epoll反应堆服务端代码:/************************原创 2020-08-14 15:04:37 · 210 阅读 · 0 评论 -
基于epoll实现C/S(C/C++)
epoll是Linux下多路复用IO接口select/poll的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率,因为它会复用文件描述符集合来传递结果而不用迫使开发者每次等待事件之前都必须重新准备要被侦听的文件描述符集合,另一点原因就是获取事件的时候,它无须遍历整个被侦听的描述符集,只要遍历那些被内核IO事件异步唤醒而加入Ready队列的描述符集合就行了。目前epell是linux大规模并发网络程序中的热门首选模型。epoll除了提供select/poll那种IO事件的电原创 2020-08-06 19:21:27 · 516 阅读 · 0 评论 -
Linux网络编程使用poll函数建立TCP C/S模型(C++实现)
服务端代码://感觉和select区别不大,而且不能像select那样跨平台,写一遍加深一下C/S模型的使用/************************************************************************* > File Name: server.cpp > Author: chencj > Mail: 1378755306@qq.com > Created Time: 2020年08月05日 星原创 2020-08-05 12:11:11 · 302 阅读 · 0 评论 -
TCPC/S模型中使用seclect函数
//使用select相比于前面多线程或者多进程而言能更好利用资源,其中最大的一个优点就是在accept函数中原来我们是阻塞等待客户端的连接,而使用select之后我们把套接字放在一个集合中对其进行检查,有客户端连接就直接调用accept函数就好了//这里就直接把服务端的代码放下面了/************************************************************************* > File Name: server.c > Author原创 2020-08-04 14:51:03 · 190 阅读 · 0 评论 -
流式套接字(TCP)和 数据报套接字(UDP)的区别
转载自这里流式套接字要分客户和服务器,而数据报不用分流式套接字适合传输数据量大的,而数据报套接字适合传递数据量少的流式套接字建立麻烦,数据报套接字建立简单客户的流式套接字只能向一个方向传递,数据报套接字可以接受任何方向的来得数据,并可以向任何地址发送数据报流套接字比数据报套接字好,这样你可以不必管理底层细节,只需要相信TCP就可以保证传送的数据是依次,可靠的传送的,缺点是效率相对数据报套接字低。使用数据报套接字,可以让你更快,但你得自已保证数据是否依次,准确的传送来的,如使用数据报套接字,你可原创 2020-08-04 10:39:44 · 3094 阅读 · 0 评论 -
Linux多线程并发C/S模型
服务端:/************************************************************************* > File Name: server.c > Author: ma6174 > Mail: ma6174@163.com > Created Time: 2020年08月02日 星期日 14时44分18秒 ******************************************************原创 2020-08-02 18:38:35 · 277 阅读 · 0 评论 -
Linux TCP C/S简单实现
//刚开始淦网络编程 加油!!! 记录一下0.0服务端代码:/************************************************************************* > File Name: server.c > Author: ma6174 > Mail: ma6174@163.com > Created Time: 2020年08月01日 星期六 16时54分24秒 *************************原创 2020-08-01 20:56:45 · 192 阅读 · 0 评论 -
Linux下简单的UDP C/S实现 (C语言)
客户端代码:/************************************************************************* > File Name: client.c > Author: ma6174 > Mail: ma6174@163.com > Created Time: 2020年07月22日 星期三 20时56分16秒 ****************************************************原创 2020-08-01 15:07:08 · 268 阅读 · 0 评论