indy问题,发送接收失败。。。。(50分)

  • 主题发起人 主题发起人 scyclone
  • 开始时间 开始时间
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通讯一点问题也没有。。。。

还请各位能帮我指点迷津。。。。
 
哪位有已做好的 或知道相关delphi代码的 贴个地址吧 分不够 偶全给你们了
时间紧迫 没时间仔细学P2P穿透NAT。。。。。 谢谢~~
 
这样的方式,只可以实现都在外网,或者都在内网,或者一台计算机在内网,而且这样的方式需要内网的先发送数据到外网才可以通讯。
qq进行通讯是使用了外网的服务器进行通讯的,如果你没有这样的服务器,最多可以做到一台内网,一台外网。想内网到内网,难 。
 
接受答案了.
 
后退
顶部