资源简介
在linux下的实时语音聊天程序,使用了adpcm编码,同时还使用了RTP实时传输协议,是一个很好的学习实时传输协议的程序。- chats the procedure under the linux real-time pronunciation, has used the adpcm code, meanwhile has used the RTP real-time transmission agreement, is a very good study real-time transmission agreement procedure.
src
...\comm.c
...\comm.h
...\e-comm
...\e-comm.c
...\e-comm.h
...\global.h
...\lib
...\...\adpcm.c
...\...\adpcm.h
...\...\alloc.c
...\...\alloc.h
...\...\config.h
...\...\Makefile.am
...\...\Makefile.in
...\...\md5.c
...\...\md5.h
...\...\mwc1616.c
...\...\mwc1616.h
...\...\ohtbl.c
...\...\ohtbl.h
...\...\phtbl.c
...\...\phtbl.h
...\...\rand32.c
...\...\rand32.h
...\...\rtp.c
...\...\rtp.h
...\...\seterror.c
...\...\seterror.h
...\...\vstr.c
...\...\vstr.h
...\Makefile.am
...\Makefile.in
...\sound.c
...\sound.h
代码片段和文件信息
/* comm.h - Communication input/output modules
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation; either version 2 of the License or (at your option)
* any later version.
*
* This program is distributed in the hope that it will be
* useful but WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
* PURPOSE. See the GNU General Public License for more
* details (available in COPYING).
*/
#include
#include
extern rtp_t rtp;
extern int open_soundcard (int oflag);
void *mod_cin (void *ptr)
{
int rtpfd; /* RTP socket file descriptor */
int rtcpfd; /* RTCP socket file descriptor */
int addr_len; /* Data size Bytes received */
struct sockaddr_in rtps; /* RTP socket */
struct sockaddr_in rtcps; /* RTCP socket */
struct sockaddr_in remote; /* Remote address information */
vstr_t recv_data; /* Received data */
rtp_packet_t *packet; /* Parsed RTP packet */
fd_set readset;
int fdmax;
fprintf(stderr “+ Communication input module loaded.\n“);
vstr_init (&recv_data RTP_MTU_SIZE);
if ((rtpfd = socket(AF_INET SOCK_DGRAM 0)) < 0) {
perror(“Error opening socket“);
exit(1);
}
if ((rtcpfd = socket(AF_INET SOCK_DGRAM 0)) < 0) {
perror(“Error opening socket“);
exit(1);
}
rtps.sin_family = AF_INET; /* Internet protocol */
rtps.sin_port = htons(RTP_PORT); /* Port */
rtps.sin_addr.s_addr = htonl(INADDR_ANY); /* rtps address */
memset(&(rtps.sin_zero) ‘\0‘ 8); /* Zero the rest */
if (bind(rtpfd (struct sockaddr *) &rtps sizeof(struct sockaddr)) < 0) {
perror(“Error binding socket“);
exit(1);
}
rtcps.sin_family = AF_INET; /* Internet protocol */
rtcps.sin_port = htons(RTCP_PORT); /* Port */
rtcps.sin_addr.s_addr = htonl(INADDR_ANY); /* rtcps address */
memset(&(rtcps.sin_zero) ‘\0‘ 8); /* Zero the rest */
if (bind(rtcpfd (struct sockaddr *) &rtcps sizeof(struct sockaddr)) < 0) {
perror(“Error binding socket“);
exit(1);
}
fprintf(stderr “+ RTP Listening at %s:%d...\n“
inet_ntoa(rtps.sin_addr) ntohs(rtps.sin_port));
fprintf(stderr “+ RTCP Listening at %s:%d...\n“
inet_ntoa(rtcps.sin_addr) ntohs(rtcps.sin_port));
addr_len = sizeof(struct sockaddr);
while(1)
{
FD_ZERO (&readset);
FD_SET (rtpfd &readset);
FD_SET (rtcpfd &readset);
fdmax = (rtpfd < rtcpfd) ? rtcpfd : rtpfd;
select (fdmax + 1 &readset NULL NULL NULL);
if (FD_ISSET(rtpfd &readset)) {
/* Receive data from network */
recv_data.size = recvfrom (rtpfd recv_data.data RTP_MTU_SIZE 0 &remote &addr_len);
vstr_adv_tail (&recv_data
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 17956 2001-11-20 16:47 e-comm-0.71\aclocal.m4
文件 404 2001-07-05 18:07 e-comm-0.71\AUTHORS
文件 91 2001-07-05 18:07 e-comm-0.71\ChangeLog
文件 2473 2012-04-11 21:30 e-comm-0.71\config.cache
文件 31247 2001-07-05 18:07 e-comm-0.71\config.guess
文件 1115 2012-04-11 20:47 e-comm-0.71\config.h
文件 966 2001-07-05 18:16 e-comm-0.71\config.h.in
文件 2893 2012-04-11 21:30 e-comm-0.71\config.log
文件 10338 2012-04-11 21:30 e-comm-0.71\config.status
文件 24171 2001-07-05 18:07 e-comm-0.71\config.sub
文件 73728 2001-11-20 16:47 e-comm-0.71\configure
文件 676 2001-11-20 16:46 e-comm-0.71\configure.in
文件 17992 2001-07-05 18:07 e-comm-0.71\COPYING
文件 7831 2001-07-05 18:07 e-comm-0.71\INSTALL
文件 5598 2001-07-05 18:07 e-comm-0.71\install-sh
文件 142160 2012-04-11 21:30 e-comm-0.71\libtool
文件 99553 2001-07-05 18:07 e-comm-0.71\ltconfig
文件 138294 2001-07-05 18:07 e-comm-0.71\ltmain.sh
文件 11007 2012-04-11 21:34 e-comm-0.71\Makefile
文件 14 2001-07-05 18:07 e-comm-0.71\Makefile.am
文件 10852 2001-11-20 16:47 e-comm-0.71\Makefile.in
文件 6283 2001-07-05 18:07 e-comm-0.71\missing
文件 722 2001-07-05 18:07 e-comm-0.71\mkinstalldirs
文件 54 2001-07-05 18:07 e-comm-0.71\NEWS
文件 325 2001-07-05 18:07 e-comm-0.71\README
文件 6313 2001-10-20 23:42 e-comm-0.71\src\comm.c
文件 900 2001-10-20 22:00 e-comm-0.71\src\comm.h
文件 4264 2012-04-11 21:34 e-comm-0.71\src\comm.o
文件 29172 2012-04-11 21:34 e-comm-0.71\src\e-comm
文件 2712 2001-10-20 20:55 e-comm-0.71\src\e-comm.c
............此处省略57个文件信息
相关资源
- 纯C实现语音合成支持windows和linux,亲
- 在Linux下的NAMD安装教程
- Linux 弹球游戏
- Linux下QT tcp接收Zedboard发送的RGB888视频
- linux PL2303 usb转串口驱动源码
- 自行实现的Linux内核USB鼠标驱动
- 2014马哥linux基础视频教程百度网盘8
- linux下Lammps 成功并行安装教程 高清
- Linux 下gtk+2.0的贪吃蛇帮助文档及其源
- V4L2视频采集与h264编码
- jdk-8u11-linux-x64.tar.gz
- linux加密perl 脚本工具
- container-selinux-2.9-4.el7.noarch.rpm
- 基于linux的飞鸽传书软件源代码有注释
- 跟老男孩学Linux运维:Web集群实战$
- 马哥Linux高端运维云计算-就业班
- zlib-1.2.7
- Linux学生管理系统
- Linux+shell编程课程设计——Linux用户管
- TensorFlow实现人脸识别(1)------Linux下
- linux安装nginx一键脚本自己用过
- 基于Linux QT显示zigbee数据
- Linux操作系统试题附答案
- bluez-demo
- bison-devel
- LINUX端口扫描源代码(C实现)
- MLdonkey_与_sancho_的安装使用
- 实验四 Linux用户和组的管理
- BASH中文帮助文档
- Linux上Qt-OpenCV采集摄像头视频并显示
评论
共有 条评论