IdUDPServer通过哪个网卡发送数据?
跪求高人帮忙,
请问:TIdUDPServer组件SendBuffer发送数据, 如果机子上有多个网卡,TIdUDPServer默认是哪个网卡发送出去的?(未设置TIdUDPServer.Bindings属性,TIdUDPServer.defaultPort=4002)
我跟踪了Delphi7的源码 SendBuffer用的是Binding属性的SendTo方法,
Binding属性是GetBinding(TIdUDPServer覆盖)方法实现
GetBinding方法中FCurrentBinding := Bindings[0];
哪位大侠可以告诉我有多个网卡时,未设置TIdUDPServer.Bindings属性,Bindings[0]会是哪个网卡?
同时请问未设置TIdUDPServer.Bindings属性TIdUDPServer是监听所有网卡的4002端口吗?
附Delphi7部分源码:
procedure TIdUDPBase.SendBuffer(AHost: string; const APort: Integer; var ABuffer;
const AByteCount: integer);
begin
AHost := GStack.ResolveHost(AHost);
Binding.SendTo(AHost, APort, ABuffer, AByteCount);
end;
property Binding: TIdSocketHandle read GetBinding;
function TIdUDPServer.GetBinding: TIdSocketHandle;
var
i: integer;
begin
if not Assigned(FCurrentBinding) then
begin
if Bindings.Count < 1 then begin
Bindings.Add;
end;
for i := 0 to Bindings.Count - 1 do begin
Bindings[i].AllocateSocket(Id_SOCK_DGRAM);
Bindings[i].Bind;
end;
FCurrentBinding := Bindings[0];
FListenerThread := TIdUDPListenerThread.Create(BufferSize, Self);
FListenerThread.Start;
BroadcastEnabledChanged;
end;
Result := FCurrentBinding;
end;