共有回帖数  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号
	
	意见反馈 | 
	关于直线 | 
	版权声明 | 
	会员须知