資源簡介
linux 語音傳輸系統(tǒng),在linux環(huán)境下運(yùn)行。linux 語音傳輸系統(tǒng),在linux環(huán)境下運(yùn)行。linux 語音傳輸系統(tǒng),在linux環(huán)境下運(yùn)行。linux 語音傳輸系統(tǒng),在linux環(huán)境下運(yùn)行。linux 語音傳輸系統(tǒng),在linux環(huán)境下運(yùn)行。linux 語音傳輸系統(tǒng),在linux環(huán)境下運(yùn)行。

代碼片段和文件信息
//============================================================================
//?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
?*?音頻發(fā)送的線程
?*/
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 串口
評論
共有 條評論