S
scyclone
Unregistered / Unconfirmed
GUEST, unregistred user!
通讯代码如下:
procedure TForm1.UDPServerUDPRead(Sender: TObject; AData: TStream; ABinding: TIdSocketHandle);
var
TempStream:TstringStream;
begin
//ABinding.SendTo(ABinding.PeerIP, ABinding.PeerPort, Str[1], Length(Str));即时返回client信息
TempStream:=TstringStream.Create('');
TempStream.CopyFrom(AData,Adata.Size);
receive.lines.add('IP为'+abinding.PeerIP+':'+inttostr(abinding.peerport)+'说:');
receive.Lines.Add(tempstream.DataString);
end;
procedure TForm1.sendKeyDown(Sender: TObject; var Key: Word; Shift: ShiftState);
begin
if key=13 then
begin
//udpclient.SendBuffer(ip.Text,strtoint(port.text),buffer,sizeof(buffer));
udpclient.Send(ip.text,strtoint(port.text),send.Text);
send.Clear;
end;
end;
测试环境(都没用代理服务器):
两个外网 结果
内网都只有一台计算机 测试通过
内网都有多台计算机 通讯发送接收失败
而以上环境下QQ通讯一点问题也没有。。。。
还请各位能帮我指点迷津。。。。
procedure TForm1.UDPServerUDPRead(Sender: TObject; AData: TStream; ABinding: TIdSocketHandle);
var
TempStream:TstringStream;
begin
//ABinding.SendTo(ABinding.PeerIP, ABinding.PeerPort, Str[1], Length(Str));即时返回client信息
TempStream:=TstringStream.Create('');
TempStream.CopyFrom(AData,Adata.Size);
receive.lines.add('IP为'+abinding.PeerIP+':'+inttostr(abinding.peerport)+'说:');
receive.Lines.Add(tempstream.DataString);
end;
procedure TForm1.sendKeyDown(Sender: TObject; var Key: Word; Shift: ShiftState);
begin
if key=13 then
begin
//udpclient.SendBuffer(ip.Text,strtoint(port.text),buffer,sizeof(buffer));
udpclient.Send(ip.text,strtoint(port.text),send.Text);
send.Clear;
end;
end;
测试环境(都没用代理服务器):
两个外网 结果
内网都只有一台计算机 测试通过
内网都有多台计算机 通讯发送接收失败
而以上环境下QQ通讯一点问题也没有。。。。
还请各位能帮我指点迷津。。。。