IdUDPServer通过哪个网卡发送数据?

xiaocongzhi 2012-12-21 06:07:55
跪求高人帮忙,
请问: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;
...全文
326 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zz997788 2013-01-16
  • 打赏
  • 举报
回复
引用 4 楼 xiaocongzhi 的回复:
我测试了IdUDPServer的IP是0.0.0.0 这个IP地址表示本机地址吗?哪它表示具体是哪张网卡呢
本机 127.0.0.1
wylton 2012-12-30
  • 打赏
  • 举报
回复
简单的回答: 客户端连接在哪张网卡就用那张发。因为ip 0.0.0.0是倾听所有。 如果 ip 是指定的, 那么哪张网卡的ip地址是跟你指定的ip地址是一样的, 就是那张网卡发。 例如你的ip是192.168.0.1, 那他绝对不会通过192.168.1.1的地址的网卡发。
xiaocongzhi 2012-12-24
  • 打赏
  • 举报
回复
我测试了IdUDPServer的IP是0.0.0.0 这个IP地址表示本机地址吗?哪它表示具体是哪张网卡呢
xiaocongzhi 2012-12-24
  • 打赏
  • 举报
回复
引用 2 楼 ShengFei01 的回复:
系统根据你发送的目的地址选择用哪块网卡,不过你可以通过bind指定地址,这有很多socket例子,你看看bind的用法: http://download.csdn.net/detail/geoff08zhang/4571358
系统“根据发送的目的地址选择网卡的标准是什么呢?”
ShengFei01 2012-12-23
  • 打赏
  • 举报
回复
系统根据你发送的目的地址选择用哪块网卡,不过你可以通过bind指定地址,这有很多socket例子,你看看bind的用法: http://download.csdn.net/detail/geoff08zhang/4571358
xiaocongzhi 2012-12-22
  • 打赏
  • 举报
回复
CSDN没希望了,发帖一整天都没人回复!

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧