这个提示具体是什么意思啊,怎么解决啊?高手帮帮忙,谢谢
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;