C#实现远程开机(局域网测试通过)

本文介绍了C#实现远程开机的原理和技术,涉及UDP协议、阻塞与非阻塞概念、IPAddress和UdpClient类的使用,以及MAC地址的重要性。通过发送特定的MagicPacket数据包,可以实现对局域网内计算机的远程唤醒。
摘要由CSDN通过智能技术生成

首先介绍相关知识。
UDP协议
UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interconnection,开放式系统互联) 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。
下面是UDP与TCP的一些区别:
**A)**UDP是无连接的。相比于TCP协议,UDP协议在传送数据前不需要建立连接,当然也就没有释放连接。
**B)**UDP是尽最大努力交付的。也就是说UDP协议无法保证数据能够准确的交付到目的主机。也不需要对接收到的UDP报文进行确认。
**C)**UDP是面向报文的。也就是说UDP协议将应用层传输下来的数据封装在一个UDP包中,不进行拆分或合并。因此,运输层在收到对方的UDP包后,会去掉首部后,将数据原封不动的交给应用进程。
**D)**UDP没有拥塞控制。因此UDP协议的发送速率不送网络的拥塞度影响。
**E)**UDP支持一对一、一对多、多对一和多对多的交互通信。
**F)**UDP的头部占用较小,只占用8个字节。

阻塞与非阻塞
简单理解为需要做一件事能不能立即得到返回应答,如果不能立即获得返回,需要等待,那就阻塞了,否则就可以理解为非阻塞。
阻塞和非阻塞关注的是程序在等待调用结果(消息,返回值)时的状态.
阻塞调用是指调用结果返回之前,当前线程会被挂起。调用线程只有在得到结果之后才会返回。
非阻塞调用指在不能立刻得到结果之前,该调用不会阻塞当前线程。
举个栗子:
你问书店老板有没有《深入浅出MFC》这本书,你如果是阻塞式调用,你会一直把自己“挂起”,直到得到这本书有没有的结果;如果是非阻塞式调用,你不管老板有没有告诉你,你自己先一边去玩了, 当然你也要偶尔过几分钟check一下老板有没有返回结果。

IPAddress类
提供网际协议地址
IPAddress.Broadcast 字段
提供IP广播地址,此字段为只读。
语法:public static readonly IPAddress Broadcast
Broadcast字段等效于以点分隔的四部分表示法格式的255.255.255.255

UdpClient类
提供用户数据报(UDP)网络服务
语法:public class UdpClient : IDisposable
UdpClient类提供了一些简单的方法,用于在阻止模式下发送和接受无连接UDP数据报。
您可以选择使用下面两种方法之一来建立默认远程主机:

  • 4
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一苇渡江694

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值