一段关于实现网络开机的代码,有点疑惑.

zhangpx 2006-08-07 09:26:54
procedure TForm1.Button2Click(Sender: TObject);
var
vBuf:array[0..101] of char;
i,j:integer;
begin
//包的格式很简单,在以太网包的任何位置上,
//以6个FF为先导,后面跟相应MAC地址重复16次即可:
for i:=0 to 5 do vBuf:=char($FF);
for i:=0 to 15 do
begin
j:=6+i*6;
vBuf[j] :=Char($00);
vBuf[j+1]:=Char($13);
vBuf[j+2]:=Char($D4);
vBuf[j+3]:=Char($04);
vBuf[j+4]:=Char($55);
vBuf[j+5]:=Char($80);
end;
NMUDP1.RemoteHost:='192.168.1.255';
NMUDP1.SendBuffer(vBuf,Length(vBuf));
end;

/////
既然是通过UDP形式发包,为什么还需要设定对方的IP地址呢?而且,此时对方的机器处于关机状态,这个IP地址起何作用? 谢谢.
...全文
264 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
netliuming 2006-08-18
  • 打赏
  • 举报
回复
unsigned(僵哥(为什么我会到这里来……)) 的对。。。。。。学习
僵哥 2006-08-11
  • 打赏
  • 举报
回复
192.168.1.255这个不是具体的IP地址,亦即不对应任何一块网卡,或任何一年MAC地址,这是一个网段内的广播地址,即发送出去之后将有192.168.1~192.168.0.254,总共254个IP的主机可以收到。
具备网络开机功能的机器的网卡,在关机之后,仍然还是处于工作状态的。因此,虽然没有分配IP地址,但是仍然可以接收数据包。而当本网段接收到一个段内广播时,任何一块活动的网卡(实际上这里面如果不存在路由的话,似乎网段的概念并不存在)都可以收到广播消息,以使得网卡ROM内的程序对数据包进行分析处理。
netliuming 2006-08-11
  • 打赏
  • 举报
回复
192.168.1.255这个地址应该是局域网内的网关地址。一般网关都充当了某些功能应用,什么广播,宿、主转换之类的,也不太清楚,估计跟这些有关的。
jaffy 2006-08-09
  • 打赏
  • 举报
回复
楼上的,肯定是带电情况呀!这也要说吗?
我测试了不成功,可MAC地址明明是对的呀?
zwh202342 2006-08-09
  • 打赏
  • 举报
回复
远程唤醒功能是不能关闭电源的!楼主可能没搞懂啊!不然没电的话,谁也没本事开机!
网络开机的情况是有限定条件的!
jaffy 2006-08-09
  • 打赏
  • 举报
回复
我也顶一个,正在测试,看能否成功!
liqingle 2006-08-09
  • 打赏
  • 举报
回复
帮你顶一下!

1,317

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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