EIDSocketError socket  #10040 Error Message too long做语音聊天,网上的例子。用到ACM控件,通过IdUDPClient1传输。procedure TcontForm.vN01Click(Sender: TObject);
 var format:pointer;
begin
   Try  
     If ipLabel.Caption='' then Showmessage('请先从右侧的列表中选择通话单位!');
     If ipLabel.Caption='' then Exit;
     //---选择语音格式
     format:=ACMDialog1.OpenDialog;
     If format=nil then Exit;
     //---开始对话 
     idudpClient1.Host:=ipLabel.Caption;
     idudpClient1.Port:=8011;
     idudpClient1.Active:=True;
     ACMWaveIn1.Open(format);
   Except End;
end;procedure TcontForm.ACMWaveIn1Data(data: Pointer; size: Integer);
 var pchData:pChar;
     memStream:TMemoryStream;
begin 
   Try
     pchData:=pchar(data);
     If pchData[1]='' then Exit;
     //---接受麦克风语音
     memStream:=TMemoryStream.Create;
     Try
       memStream.Write(pchData^,size);
       idudpClient1.SendBuffer(memStream.Memory^,memStream.Size);
     Finally
       memStream.Free;
     End;
   Except End;
end;procedure TcontForm.vN02Click(Sender: TObject);
 var format:pointer;
begin
   Try
     //---设定UDPServer监听8011端口
     idudpServer1.DefaultPort:=8011;
     idudpServer1.Active:=True;
     //---同时设置音频格式
     format:=ACMDialog1.OpenDialog; 
     If format=nil then exit;   
     ACMWaveOut1.Open(format);
   Except End;
end;procedure TcontForm.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
  ABinding: TIdSocketHandle); 
 var a:array of char;
     s:string;
     pcharplaystr:pchar;
begin 
   Try
     //---播放接收到的数据
     Showmessage('3');
     SetLength(a,AData.Size);
     AData.ReadBuffer(A[0],AData.Size);
     s:=PChar(@A[0]);
     pcharplaystr:=pchar(s);
     Showmessage('4');
     ACMWaveOut1.PlayBack(pcharplaystr,AData.Size);  
   Except End;
end;