一个IdUDPServer绑定两个端口6200 和6300
一个IdUDPClient给6200发信息后,Server能收到,如果想指定server的一个端口来回复,用了这个IdUDPServer.bindings.item[0].send();不知道可以否。
如果可以,那么在Client接收的时候,能否判断时那个端口发出来的6300还是6200,那个方法或者函数可以判断出来,一直搞不明白。
一个IdUDPClient给6200发信息后,Server能收到,如果想指定server的一个端口来回复,用了这个IdUDPServer.bindings.item[0].send();不知道可以否。
如果可以,那么在Client接收的时候,能否判断时那个端口发出来的6300还是6200,那个方法或者函数可以判断出来,一直搞不明白。
解决方案 »
- 关于删除dbgrideh的某一列的问题
- 读取注册表信息并显示,主要是ReadBinaryData...........................
- 深夜超级喊救命,如何把一块内在虚拟成硬盘并把EXE保存在上面启动运行
- 关于类型转换的讨论
- To:Hank(星星农场),ERP的源代码和演示版
- 用户登陆后显示的记录(ACCESS)!
- 硬盘小问题,先谢过了
- 模糊查询问题 ........ where like '%'
- 无条件送您50元,人人有份!
- Delphi-Corba-Java 屠龙剑-乾坤大挪移-倚天剑?
- TclientScoket程序出现错误,见图,急急处理.高分重谢
- 急.....如何動態得到組件名?
IdUDPServer.bindings.items[0].IP:='192.168.1.6';
IdUDPServer.bindings.items[0].Port:='6200';
IdUDPServer.bindings.add;
IdUDPServer.bindings.items[1].IP:='192.168.1.6';
IdUDPServer.bindings.items[1].Port:='6300';
这样就可以啊
procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
ABinding: TIdSocketHandle);
var
iLoop : Integer;
iSize : Integer;
bBuffer : array of Byte;
sBuffer : String;
str1 :PChar;
begin
iSize := AData.Size;
SetLength (bBuffer, iSize);
AData.ReadBuffer(bBuffer[0], iSize);
sBuffer := ABinding.PeerIP + ' : ';
for iLoop := 0 to iSize - 1 do
begin
sBuffer := sBuffer + chr(bBuffer[iLoop]);
end;
Memo1.Lines.Add(sBuffer); str1 := PChar(Memo2.Text);//'OK,GXT UDP ' + DatetimeToStr(Now);
ABinding.SendTo(ABinding.PeerIP,ABinding.PeerPort,str1[1],Length(str1));
//IdUDPClient1.Send('OK!');
//ABinding.SendTo(ABinding.PeerIP,ABinding.PeerPort,Memo2.Text[1],Length(str1));end;