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;
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;
解决方案 »
- 写入注册表时错误'Unable to write to \Software\xxx\xxx'
- 隐藏安装程序问题 续
- 请问有没有这样的网格控件?
- Memo控件,如何删除最后一行后光标不能在移到该行。。
- 关于TIdFTP异常,这个控件比较扁,希望高人指点
- 用DataSetProvider.ApplyUpdates更新数据,错误处理只能在UpdateError事件中做吗?
- 关于activex方法的返回值类型的问题。
- COM+能不能在WIN98,XP中安装使用!我的客户端代理在XP不能装啊!!!
- VB中的Nothing在Delphi中是什么?
- ParamCount这个函数有什么用?
- TreeView的二级科目如何按排序来显示?
- dbgrideh1.Columns[4].PickList.clear
EIDSocketError socket #10040 Error Message too long请高手帮帮忙解决,谢谢