资源简介
linux 语音传输系统,在linux环境下运行。linux 语音传输系统,在linux环境下运行。linux 语音传输系统,在linux环境下运行。linux 语音传输系统,在linux环境下运行。linux 语音传输系统,在linux环境下运行。linux 语音传输系统,在linux环境下运行。

代码片段和文件信息
//============================================================================
// Name : AudioServer.cpp
// Author : Fang
// Version :
// Copyright : All rights reserved by Mr.Fang.
// Description : Hello World in C Ansi-style
//============================================================================
#include
#include
#include
#include
#include
#include “socketxx.h“
#include “ClientSession.h“
#include “AudioThread.h“
#include “sconfig.h“
#include “AudioServer.h“
#include “Utils.h“
SessionList slist;
struct ServerConfig g_config;
AudioServer::AudioServer() {
}
AudioServer::~AudioServer() {
servSock.close();
}
/** ClientThread
* 客户端会话的线程
*/
void *AudioServer::ClientThread(void *args) {
int sock = (int)args;
printf(“Client thread %llu\n“ (unsigned long long)pthread_self());
ClientSession session(sock);
session.SetList(&slist);
session.SetConfig(&g_config);
session.Start();
return NULL;
}
/** AudioSession
* 音频发送的线程
*/
void *AudioServer::AudioSession(void *args) {
AudioThread thread;
struct ServerConfig *conf = (struct ServerConfig *)args;
pthread_detach(pthread_self());
thread.SetList(&slist);
thread.SetConfig(conf);
thread.Start();
return NULL;
}
bool AudioServer::GetConfig(const char *path struct ServerConfig &conf) {
SConfig cf;
char buf[128];
if(!cf.ParseIniFile(path)) {
printf(“Parse config file %s failed\n“ path);
return false;
}
if(cf.GetNode(“SERVER“ “TCP_PORT“ buf) != NULL) {
conf.tcpPort = atoi(buf);
}
else {
conf.tcpPort = 7070;
}
if(cf.GetNode(“SERVER“ “UDP_PORT“ buf) != NULL) {
conf.udpPort = atoi(buf);
}
else {
conf.udpPort = 6000;
}
if(cf.GetNode(“SERVER“ “LOG_PATH“ conf.logPath) == NULL) {
strcpy(conf.logPath “./logs“);
}
if(cf.GetNode(“SERVER“ “AUDIO_DEVICE“ conf.audioDevice) == NULL) {
strcpy(conf.audioDevice “/dev/dsp“);
}
if(cf.GetNode(“SERVER“ “SERVER_IP“ conf.serverIP) == NULL) {
memset(conf.serverIP 0 sizeof(conf.serverIP));
}
return true;
}
int AudioServer::StartService(const char *configFile) {
pthread_t threadID;
int size;
int sock;
struct sockaddr_in clientAddr;
GetConfig(configFile g_config);
servSock.create(AF_INET);
if(!servSock.bind(NULL g_config.tcpPort)) {
perror(“Bind“);
return -1;
}
servSock.listen(10);
pthread_create(&threadID NULL AudioSession &g_config);
while(1) {
size = sizeof(clientAddr);
sock = servSock.accept((SA *)&clientAddr &size);
if(sock < 0) {
perror(“accept“);
continue;
}
if(pthread_create(&threadID NULL ClientThread (void *)sock) != 0) {
perror(“pthread_create“);
sleep(1);
continue;
}
}
return 0;
}
void IgnoreSignals() {
signal(SIGPIPE SIG_IGN);
signal(SIGHUP SIG_IGN);
}
int main(int argc char *argv[]) {
puts(“Start Audio Server“);
int ret;
pid_t pid;
if(IsProcRunning(“AudioServer.exe“)) {
printf(“Process is already running\n“);
return 0;
}
else {
SavePidFile((in
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 11378 2011-11-06 15:11 AudioServer\.cproject
文件 2417 2011-11-06 15:11 AudioServer\.project
文件 3595 2011-11-06 15:11 AudioServer\AudioServer.cpp
文件 933 2011-11-06 15:11 AudioServer\AudioServer.h
文件 3385 2011-11-06 15:11 AudioServer\AudioThread.cpp
文件 983 2011-11-06 15:11 AudioServer\AudioThread.h
文件 8539 2011-11-06 15:11 AudioServer\Client.cpp
文件 4318 2011-11-06 15:11 AudioServer\ClientSession.cpp
文件 1867 2011-11-06 15:11 AudioServer\ClientSession.h
文件 322 2011-11-06 15:11 AudioServer\common.h
文件 521 2011-11-06 15:11 AudioServer\Makefile
文件 855 2011-11-06 15:11 AudioServer\membuffer.h
文件 1776 2011-11-06 15:11 AudioServer\play.cpp
文件 875 2011-11-06 15:11 AudioServer\SessionList.cpp
文件 653 2011-11-06 15:11 AudioServer\SessionList.h
文件 6209 2011-11-06 15:11 AudioServer\socketxx.cpp
文件 3622 2011-11-06 15:11 AudioServer\socketxx.h
文件 1932 2011-11-06 15:11 AudioServer\utils\LoopQueue.cpp
文件 641 2011-11-06 15:11 AudioServer\utils\LoopQueue.h
文件 855 2011-11-06 15:11 AudioServer\utils\membuffer.h
文件 2956 2011-11-06 15:11 AudioServer\utils\sconfig.cpp
文件 1426 2011-11-06 15:11 AudioServer\utils\sconfig.h
文件 1953 2011-11-06 15:11 AudioServer\utils\Utils.cpp
文件 753 2011-11-06 15:11 AudioServer\utils\Utils.h
文件 1124 2011-11-06 16:40 AudioServer\utils\.svn\entries
文件 2 2011-11-06 15:11 AudioServer\utils\.svn\format
文件 1932 2011-11-06 15:11 AudioServer\utils\.svn\text-ba
文件 641 2011-11-06 15:11 AudioServer\utils\.svn\text-ba
文件 855 2011-11-06 15:11 AudioServer\utils\.svn\text-ba
文件 2956 2011-11-06 15:11 AudioServer\utils\.svn\text-ba
............此处省略80个文件信息
- 上一篇:16QAM 链路仿真
- 下一篇:CC2640 串口
相关资源
- ModelGoon-4.4.1-site.zip
- 超市收银系统eclipse access大学课程设计
- spaceclaim教程
- 解决Eclipse的ADT没有NDK选项的问题
- Eclipse编程技术与附CD-ROM光盘
- eclipse_jetty9离线插件
- 在eclipse中使用SVN的实现方法(图文教
- eclipse安卓工程相册、相机选择图片功
- site-1.6.5.zipeclipse 安装 svn 插件
- myeclipse9 注册机(自动生成注册码和激
- eclipse、idea代码模板
- eclipse统计代码工具
- Eclipse4.5汉化包 解压即可汉化
- birt调用存储过程.doc
- MyEclipse2018.8.0破解
- myeclipse-2016-CI-6破解文件
- 讯飞人脸识别eclipse版
- myeclips的xfire插件.rar
- 基于Eclipse编写的在线支付软件
- Eclipse专业配色方案 - 让编码更舒适高
- 度假村管理系统
- 基于MVC的网上书城系统
- Debugging With GDB中文版
- eclipse jetty9.0 插件
- eclipse编写坦克游戏
- myeclipse2017 ci10 破解工具亲测可用
- Myeclipse 2015 CI 破解工具
- Eclipse64位4.3开普勒版eclipse-standard-ke
- eclipse主题配色Onedark
- 实现了监控复制文字微信号等次数统
评论
共有 条评论