pjlib的网络通信接口

socket和select

1) <pj/sock.h>

第一部分,包含一些socket使用的常用宏定义,宏定义前缀为PJ_。比如:PJ_INVALID_SOCKET

在操作系统的定义基础上,统一定义,统一名称和数值。属于在操作系统上的封装层。

跨平台移植的基本操作。

<pj/sock_select.h>

对select函数使用的封装。

跨平台移植的基本操作。

ioqueue

1) ioqueue是一套事件驱动的接口。和select类似,也是对socket收发事件进行统一处理的模块机制。

pjmedia进行音视频网络传输使用的是这一套接口。支持多线程驱动。

2) ioqueue 包含的文件

<pj/ioqueue.h> <ioqueue_common_abs.c> <ioqueue_common_abs.h> 

<ioqueue_select.c> 

<ioqueue_epoll.c>

<ioqueue_winnt.c>

<ioqueue_kqueue.c>    

<ioqueue_symbian.cpp>  不重要,塞班操作系统实现

<ioqueue_uwp.cpp>         不重要,uwp实现

ioqueue 接口框架有多种实现方式,比较重要的是 select实现<ioqueue_select.c> ,这个接口比较通用,多种操作系统都可以使用。也有一些缺陷,也是select,比如 性能相当较低,socket fd数值不能超过 1024 等。

<ioqueue_epoll.c> 是ioqueue的epoll 实现。在Unix类操作系统中可以使用,比如linux内核的操作系统,Ubuntu, centos,Android等操作系统中可以使用该实现。

<ioqueue_winnt.c> 是Windows下的IOCP接口实现。epoll和iocp的差别 。

 <ioqueue_kqueue.c>   kqueue被用在FreeBSD,NetBSD, OpenBSD, DragonFly BSD, 和 macOS中。

我们可以根据自己的目标操作系统选择一个(只能选择一个)合适的ioqueue实现,将其编译链接到应用程序中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值