这个提示具体是什么意思啊,怎么解决啊?高手帮帮忙,谢谢

loin999 2012-06-01 06:08:06
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;
...全文
90 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
shuihan20e 2012-06-02
  • 打赏
  • 举报
回复
发送/接收buffer不够大引起的。用setsockopt将socket的send/recv的buffer加大
loin999 2012-06-01
  • 打赏
  • 举报
回复
编译的时候,出现提示:
EIDSocketError socket #10040 Error Message too long

请高手帮帮忙解决,谢谢

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧