
Linux网络编程
Mr.禾
这个作者很懒,什么都没留下…
展开
-
ubuntu下 libevent库安装和简单测试
首先去官网下载压缩包libevent官网解压缩tar zxvf libevent-2.1.8-stable.tar.gz 进到下载目录,把安装包放到自己目录下进行解压.cd libevent-2.1.8-stable/依次输入./configure –prefix=/usr 配置目录 make sudo make install查看是否安装成功ls -l /usr/lib |grep libevent测试cd libevent-2.1.8-stable/sa原创 2020-11-04 22:18:20 · 1177 阅读 · 1 评论 -
socket本地套接字 进程间通信 IPC
文章目录本地套接字服务器端客户端测试结果本地套接字socket API 原本是为多台主机之间网络通信设计的,同时这种网络 socket 也支持单台主机上的进程间通信,(通过 loopback 地址 127.0.0.1)。Unix本地套接字,其实就是一种专门用于本地(也就是单个主机上的)网络通信的一种方法,它所用的 API 跟我们之前用的网络 socket API 是一样的。 实际上,这种通信方式更类似于IPC(进程间通信)的方式,比如无名管道(pipe)、有名管道(mkfifo)。但是,Unix域套原创 2020-11-04 15:56:43 · 470 阅读 · 0 评论 -
UDP 组播通信 linux网络编程
文章目录UDP组播服务器端客户端测试结果UDP组播通常,在传统的网络通讯中,有两种方式,一种是源主机和目标主机两台主机之间进行的“一对一”的通讯方式,即单播,第二种是一台源主机与网络中所有其他主机之间进行的通讯,即广播。那么,如果需要将信息从源主机发送到网络中的多个目标主机,要么采用广播方式,这样网络中所有主机都会收到信息,要么,采用单播方式,由源主机分别向各个不同目标主机发送信息。可以看出来,在广播方式下,信息会发送到不需要该信息的主机从而浪费带宽资源,甚至引起广播风暴:而单播方式下,会因为数据包的原创 2020-11-03 21:24:54 · 466 阅读 · 1 评论 -
socket 简易UDP通信实现 linux网络编程
文章目录服务器端客户端测试结果服务器端#include<stdio.h>#include<stdlib.h>#include<unistd.h>#include<fcntl.h>#include<sys/types.h>#include<strings.h>#include<ctype.h>#include<arpa/inet.h>#include<sys/socket.h>#d原创 2020-11-03 18:55:17 · 132 阅读 · 0 评论 -
linux 线程池 简易模型 C代码详解
线程池类似于生产者消费者模型的思想线程池意思就是提前准备一定数量的消费者(线程)做等待,当任务队列中有新任务时,交给线程池中的等待线程去处理。为了高效的处理事件,线程池中的线程数量应该会动态变化,如果有太多空线程不干活,那么就回收它们的资源;如果大多数线程都在干活,那么为了能有足够线程处理后续任务,应该增加线程数量。一般单独开一个管理者线程来管理线程池。以下是一个简易线程池模型代码线程池#include<stdio.h>#include<stdlib.h>#inclu原创 2020-11-03 15:10:34 · 236 阅读 · 0 评论 -
epoll 反应堆模型 linux网络编程
相比较epoll普通模式主要的改进有以下:1.利用了epoll_event结构体里的data.ptr(泛型指针),加入红黑树时能携带自己的信息和相应的回调函数。在epoll_wait()函数返回就绪事件时能执行相应回调函数。The struct epoll_event is defined as: typedef union epoll_data { void *ptr; int fd;原创 2020-10-30 17:27:49 · 151 阅读 · 0 评论 -
epoll 非阻塞IO 边沿触发模式
与之前的epoll默认的水平触发模式相比epoll的非阻塞IO模式,利用边沿触发模式,同时修改read()函数模式为非阻塞读取,这样在减少epoll_wait()函数调用的同时也实现了水平触发的效果,是对epoll最优的模式。服务器端#include<stdio.h>#include<stdlib.h>#include<unistd.h>#include<fcntl.h>#include<sys/types.h>#include&l原创 2020-10-28 14:31:34 · 451 阅读 · 0 评论 -
epoll 边沿触发模式和水平触发模式
在epoll中,epoll_wait()返回就绪事件并读取客户端发来的信息,如果发来1000字节,只读取500字节,那么读端缓存中还剩下500字节,epoll_wait()会继续阻塞等待下一个读事件还是被剩下的500字节数据触发?利用管道pipe和epoll函数做个小实验代码#include<stdio.h>#include<stdlib.h>#include<unistd.h>#include<fcntl.h>#include<sys/t原创 2020-10-28 09:41:12 · 372 阅读 · 0 评论 -
epoll 函数 多路I/O转接服务器 linux网络编程
epoll函数1.int epoll_create(int size); size是监听数量,返回一个红黑二叉树的根节点,方便查找和删除2.int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event); 修改监听集操作参数epfd : epoll_create返回值;参数op,设置操作模式(实际上是对红黑树操作), EPOLL_CTL_ADD增加 ; EPOLL_CTL_MOD修改 ; EPOLL_CTL_DE原创 2020-10-27 19:33:59 · 156 阅读 · 0 评论 -
poll函数 多路I/O转接服务器 linux网络编程
poll程序思路同select函数用法函数原型:int poll(struct pollfd *fds, nfds_t nfds, int timeout);参数1:传入传出参数,返回监听集响应状态参数2:监听数量参数3:超时判断,一般设为-1.结构体定义struct pollfd {int fd; /* file descriptor /short events; / requested events /short revents; / return原创 2020-10-26 21:07:27 · 182 阅读 · 0 评论 -
select函数 多路I/O转接服务器 linux网络编程
多路I/O转接服务器多路IO转接服务器也叫多任务IO服务器。该类服务器实现的主旨思想是,不再由程序自己监视客户端连接,取而代之由内核替应用程序监视文件描述符。可用select函数实现。select函数原型int select(int nfds, fd_set *readfds, fd_set *writefds,fd_set *exceptfds, struct timeval *timeout);fd_set代表集合。参数1:所监听的所有文件描述符中,最大的文件描述符+1.参数2:所监听的文件原创 2020-10-26 09:14:41 · 164 阅读 · 0 评论 -
socket网络通信 多线程并发服务器程序 linux网络编程
socket通信详细代码见添加链接描述服务器端#include<stdio.h>#include<stdlib.h>#include<unistd.h>#include<fcntl.h>#include<sys/types.h>#include<arpa/inet.h>#include<ctype.h>#include<string.h>#include<pthread.h>#i原创 2020-10-23 14:40:31 · 141 阅读 · 0 评论 -
socket网络通信 多进程并发服务器程序 linux网络编程
socket服务器客户端代码详细解析见我的另一篇博客socket网络编程服务器端程序#include<stdio.h>#include<stdlib.h>#include<unistd.h>#include<arpa/inet.h>#include<ctype.h>#include<strings.h>#include<sys/wait.h>#include<signal.h>#include原创 2020-10-23 09:10:35 · 190 阅读 · 0 评论 -
socket套接字(服务器和客户端编程) linux网络编程
概述所谓套接字(Socket),就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。一个套接字就是网络上进程通信的一端,提供了应用层进程利用网络协议交换数据的机制。从所处的地位来讲,套接字上联应用进程,下联网络协议栈,是应用程序通过网络协议进行通信的接口,是应用程序与网络协议根进行交互的接口编程流程服务器端:1.socket() 建立套接字2.bind() 绑定IP端口号 (struct sockaddr_in addr 初始化)3.listen() 指定同时最大连接数4.a原创 2020-10-21 19:38:36 · 713 阅读 · 0 评论