资源简介
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 串口
相关资源
- Idea的Eclipse风格字体颜色
- com.sysdeo.eclipse.tomcat_3.3.1
- MyEclipse10.7.1破解 (完美破解含教程)
- myeclipse可视化图形界面插件+安装说明
- MyEclipse配置Activiti插件所需补丁activ
- MyEclipse8.5主题
- MyEclipse10.x完美破解_解决导出war问题
- myeclipse实现用户登录的详细教程
- 基于MyEclipse的职工考勤系统设计
-
Eclipse + CDT + YAGARTO + J-li
nk,STM32开源 - myeclipse10.6完美破解(带破解说明)
- Myeclipse 2013
- requires \“org.eclipse.emf.transaction 1.4.0
- windows64位平台的hadoop2.5.2插件包(ha
- DES加密解密以及Eclipse插件
- myeclipse2015stable3.0破解.rar
- IntelliJ IDEA设置Eclipse样式,关键字颜色
- 竞价单界面复制文字微信号等次数统
- MyEclipse10.1破解工具及方法图解.zip
- eclipse搭建SSH框架详解
- jd-gui插件-jd-eclipse-site-1.0.0-RC2
- eclipse最佳设置
- eclipse 下的hibernate tools
-
[原创]Hba
seClient - myeclipse免安装方法
- MyEclipse REST Web Service 简单的实现
- MyEclipse.10.5破解包
- 大学计算机基础试题
- PCL点云库IterativeClosestPoint用法demo
- MyEclipse10安装PropertiesEditor的插件
评论
共有 条评论