indy 控件组中的UDP控件该怎么用啊? binding是何含义?(100分)

  • 主题发起人 crazymoon
  • 开始时间
C

crazymoon

Unregistered / Unconfirmed
GUEST, unregistred user!
用FASTNET时还能看懂,
但INDY中有了什么peer,binding
不明白
我做一个简单的UDP聊天程序,要能在不同的电脑上互相聊天,仅在局域网内
下面可对?
在一个窗体同时放上 udpclient1 udpserver1
在 udpclient1中
button click_
var
ReceivedString: String;
C: String;
begin
c:='';
receivedstring:='';
C := '@call' ;
UDPC.Host := COMbobox1.Text ;
UDPC.Send(c);
ReceivedString := UDPC.ReceiveString();
if ReceivedString = '' then
Memo2.Lines.Add('!!!与<'+UDPC.Host+'>的网络连接可能不通!!!' )
else
Memo2.Lines.Add('报告:'+ReceivedString);
end;
在udpserver1中
procedure TForm1.udpcsUDPRead(Sender: TObject; AData: TStream;
ABinding: TIdSocketHandle);
var
StrStream: TStringStream;
s,t: String;
begin
StrStream := TStringStream.Create('');
t:='';
try
StrStream.CopyFrom(AData, AData.Size);

s :=StrStream.DataString;
if combobox1.Items.IndexOf(ABinding.PeerIP)=-1 then combobox1.Items.Add(ABinding.Memo2.Lines.Add('!!!呼叫!!!'+' //from '+ABinding.PeerIP+' ##'+datetostr(date)) ;
t:='------'+idip.currentIP+'收到了呼叫-------';
ABinding.SendTo(ABinding.PeerIP, ABinding.PeerPort, t[1], Length(t)); //回送

但应如何设置 binding的属性,
 
你的客户端能收到回示吗?恐怕不行吧,udpclient1 udpserver1放在同一个程序中就有这个毛病,
用ABinding.SendTo返回的东西ReceivedString := UDPC.ReceiveString();死活也收不到,这是INDY
的BUG,你别费劲了。你老实用client发,server收得了。
 
用client发,server收得了。
这样比较安全
 
接受答案了.
 
顶部