![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux 网络
lhh1113
这个作者很懒,什么都没留下…
展开
-
Unix域套接字传递描述符字
int socketpair(int domain , int type, int protocol, int sv[2])功能:创建一个全双工的流管道参数: domain 协议家族 type套接字类型protocol 协议类型sv 返回套接字对返回值:成功返回 0;失败返回 -1用于具有父子关系的进程或有亲缘关系的进程间通信#include #原创 2016-03-16 22:18:31 · 322 阅读 · 0 评论 -
keepllive属性来检测网络连接的状态
用linux socket 的keepllive属性来检测网络连接的状态却发现编译时出现错误,TCP_KEEPIDLE,TCP_KEEPINTVL,TCP_KEEPCNT居然未定义。[喝小酒的网摘]http://blog.hehehehehe.cn/a/17673.htm加上下面的头文件就可以了,其实TCP_KEEPIDLE,TCP_KEEPINTVL,TCP_KEEPCNT都是在tcp.h中转载 2016-12-14 10:24:48 · 1307 阅读 · 0 评论 -
网络开发中客户端连接保鲜机制实现方法
网络开发中的TCP连接分为长连接模式和短连接的模式,短连接就是在服务端接收到客户端请求,完成处理和应答后会主动关闭这个连接,而长连接顾名思义就是这个连接会一直存在着。一般来说,短链接的程序更容易编写和维护,因为一旦收到断开消息表明当前请求结束了,新的请求也会重新发起新的连接,而长连接需要处理拆包,粘包,错误累计飘移等各种复杂的问题。不过有得必有失,短链接最主要的问题是性能问题,每个请求都需要做三次转载 2016-12-15 17:12:04 · 398 阅读 · 0 评论 -
分布式模式之Broker模式
分布式模式之Broker模式 问题来源: 创建一个游戏系统,其将运行在互联网的环境中。客户端通过WWW服务或特定的客户端软件连接到游戏服务器,随着流量的增加,系统不断的膨胀,最终后台数据、业务逻辑被分布式的部署。然而相比中心化的系统,复杂度被无可避免的增大了,该如何降低各个组件之间的耦合度。挑战: 需要保证可伸缩性、可维护性、可更新性,需要将服务划分为各个相对独立的组件,组转载 2017-01-04 09:53:43 · 177 阅读 · 0 评论 -
网络模型:阻塞IO,非阻塞IO,IO复用,信号驱动IO,异步IO
阻塞IO:服务端代码:有客户端连接过来就会开起一个线程,这个线程去处理与此客户的数据收发,没有数据就会阻塞在accept那里#include #include #include #include #include #include #include #include #include #include #define BUFFSIZE 1024#define原创 2017-02-14 19:46:19 · 372 阅读 · 0 评论 -
select
int select(int nfds, fd_set *readfds, fd_set *writefds,fd_set *exceptfds, struct timeval *timeout);管理多个IO事件;int nfds :要管理的事件最大值+1;fd_set *readfds: 关注可读事件,和connect 事件fd_set *writefds:关注可写事件原创 2017-02-15 08:33:48 · 176 阅读 · 0 评论 -
Epoll LT和ET模式
关于epoll解说请参考:点击打开链接下面是使用实例,也可以参考man epoll Ubuntu上的实例#define BUFFSIZE 1024#define PORT 5588using namespace std;#define ERR_EXIT(a) do \{ \ printf("%s", a); \} while (0);typedef vector原创 2017-02-21 01:03:32 · 318 阅读 · 0 评论 -
信号signal
声明:转自:http://www.lxway.com/252444594.htm2. 信号(上)2.1. 信号及信号来源2.1.1 信号本质信号是在软件层次上对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的。信号是异步的,一个进程不必通过任何操作来等待信号的到达,事实上,进程也不知道信号到底什么时候到达。转载 2016-04-09 12:32:23 · 671 阅读 · 0 评论 -
线程基本知识
进程:程序的一次动态执行的过程,相比程序多了一些代码段,数据段,堆栈段,PCB线程是程序执行的最小单元,线程共享数据,但也拥有自己的一部数据:线程ID一组寄存器栈error信号状态优先级创建一个进程和创建一个线程的区别:当一个进程执行fork调用的时候,会创建出进程的一个新拷贝,新进程将拥有他自己的变量和他自己的PID。这个新进程运行时间是独立的,他在执原创 2016-02-25 00:55:42 · 393 阅读 · 0 评论 -
posix线程库<一>
POSIX线程库的使用方法:1. 与线程有关的函数构成了一个完成的系列,绝大多数函数的名字有是以“pthread_"开头的2. 要使用这些函数库,要通过引入3. 链接这些线程函数库时要使用编译器命令的”-lpthread"线程和进程比较:进程 线程pid_t pthread_tfork() pthread_create()waitpid pt原创 2016-02-25 21:26:55 · 469 阅读 · 0 评论 -
posix线程<二>
线程属性:初始化与销毁属性int pthread_attr_init(phread_attr_t* attr)int pthread_attr_destroy(pthread_attr_t* attr)获取与设置分离属性int pthread_attr_getdetachstate(const pthread_attr_t* attr, int * detachstate)原创 2016-03-02 22:04:34 · 218 阅读 · 0 评论 -
POSIX信号量与互斥锁
POSIX信号量相关函数有名信号量:sem_open 信号量的打开sem_close 信号量的关闭sem_unlink 信号量的删除无名信号量sem_init 信号量初始化 (可以用于不同进程间的通信,取决于第二个参数非零,同时信号量的对象要在共享内存中)sem_destroy信号量销毁sem_wait 对信号量的PV操作:可以对原创 2016-03-06 12:19:40 · 393 阅读 · 0 评论 -
一个简单线程池的实现
1.用于执行大量相对短暂的任务2.当任务增加的时候能够动态的增加线程池中线程的数量直到达到一个阈值3.当任务执行完毕的时候,能够动态的销毁线程池中线程4.该线程池的实现本质上也是生产者与消费模式的应用,生产者线程向任务队列中添加任务,一旦队列有任务 到来,如果有等待线程就唤醒来执行任务,如果没有等待线程并且线程数没有达到阈值,就创建新线程来执行任务线程池线程的数量原创 2016-03-09 21:51:16 · 303 阅读 · 0 评论 -
POSIX条件变量
条件变量:1.当一个线程互斥地访问某个变量时,他可能发现其他线程改变状态之前,他什么也不做了2.例如:一个线程访问队列时,发现队列为空,他只能等待,只到其他线程将一个节点添加到队列中,这种情况就需要用到条件变量对于解决无界缓冲区比较好的选择函数: pthread_cond_init初始化一个条件变量pthread_cond_destroy 销毁一个条件变量原创 2016-03-08 00:27:51 · 365 阅读 · 0 评论 -
FF ASIO 异步消息网络框架
http://www.cnblogs.com/zhiranok/archive/2011/12/18/ffasio.html我提到,针对前面使用boost asio 中遇到的问题,对asio进行封装,如下几个目标:1. 创建socket、acceptor不再自己构造io_service,由于asio中的对象均要保存io_service的引用, 若要手动构造,必原创 2016-11-09 12:57:08 · 239 阅读 · 0 评论