共有回帖数 2 个
-
-
;+pdlg- GetError(GetLastError()));
m_Server.Close();
int ret ;
while(1)
{ //开始循环接收声音文件,首先接收文件长度
ret = recSo.Receive(&length,sizeof(DWORD));
if(ret== SOCKET_ERROR )
AfxMessageBox("服务器端接收声音文件长度出错,原因 : "+pdlg-GetError(GetLastError()));
if(ret!=sizeof(DWORD))
{
AfxMessageBox("接收文件头错误,将关闭该线程 ");
recSo.Close();
return -1;
}//接下来开辟length长的内存空间
pdlg-m_AudioDataOut[pdlg-nReceive].lpdata =(PBYTE) realloc (0,length);
if (pdlg-m_AudioDataOut[pdlg-nReceive].lpdata == NULL)
{
AfxMessageBox("erro memory_ReceiveAudio");
recSo.Close();
return -1;
}
else//内存申请成功,可以进行循环检测接受
{
DWORD dwReceived = 0,dwret;
while(lengthdwReceived)
{
dwret = recSo.Receive((pdlg-m_AudioDataOut [pdlg-nReceive].lpdata+dwReceived),
(length-dwReceived));
dwReceived +=dwret;
if(dwReceived ==length)
{
pdlg-m_AudioDataOut[pdlg- nReceive].dwLength = length;
break;
}
}
}//本轮声音文件接收完毕
pdlg-nReceive=(pdlg-nReceive+1)%OutBlocks;
}
recSo.Close();
return 0;
}
UINT Audio_Send_Thread(LPVOID lParam)
{
CRecTestDlg *pdlg = (CRecTestDlg*)lParam;
CSocket m_Client;
m_Client.Create();
if( m_Client.Connect("127.0.0.1",4002))
{
DWORD ret, length;
int count=0;
while(1)//循环使用指针nSend
{
length =pdlg-m_AudioDataIn[pdlg- nSend].dwLength;
if(length !=0)
{ //首先发送块的长度
if(((ret = m_Client.Send(&length,sizeof (DWORD)))
!= sizeof(DWORD))||(ret==SOCKET_ERROR))
{
AfxMessageBox("声音文件头传输错误! "+pdlg-GetError(GetLastError()));
pdlg-OnOK();
break;
}//其次发送块的内容,循环检测是否发送完毕
DWORD dwSent = 0;//已经发送掉的字节数
while(1)//==============================发送声音数
1楼 2016-07-28 11:24 回复
-
据开始
{
ret = m_Client.Send((pdlg-m_AudioDataIn [pdlg-nSend].lpdata+dwSent),
(length-dwSent));
if(ret==SOCKET_ERROR)//检错
{
AfxMessageBox("声音文件传输错误! "+pdlg-GetError(GetLastError()));
break;
}
else //发送未发送完的
{
dwSent += ret;
if(dwSent ==length)//发送完毕,则释放当前 “块”
{
free(pdlg-m_AudioDataIn[pdlg- nSend].lpdata);
pdlg-m_AudioDataIn[pdlg- nSend].dwLength = 0;
break;
}
}
} //======================================发送声音 数据结束
}
pdlg-nSend = (pdlg-nSend +1)% InBlocks;
}
}
else
AfxMessageBox("Socket连接失败"+pdlg-GetError (GetLastError()));
m_Client.Close();
return 0;
}存在的问题(1) 一旦添加声音控制waveSetGetVolume(),耳机就变成单声的,打开系统 的音量控制,发现“波形”选项完全不平衡。(2) 声音的录入运 用双缓冲技术,使得无懈可击,但是在播放时,采用双缓冲调试时未能取得成功 ,相反使用单缓冲却基本上能够满足一般的音效。(3) 可能还有尚未暴露的 错误,恳请广大朋友不吝赐教。E-mail: candy0624@163.comFinally,Thank Candy Lee(my special friend) for her help.
2楼 2016-07-28 11:24 回复
Copyright © 2010~2015 直线网 版权所有,All Rights Reserved.沪ICP备10039589号
意见反馈 |
关于直线 |
版权声明 |
会员须知