在blazor webassembly中使用ping类



我想尝试在blazor webassembly项目中使用ping类ping一些设备。我创建了如下代码。当我试图调试我的应用程序时,它总是在第一行完成执行,而不执行ping。发送方法。使用这种技术是否可以在浏览器中进行这样的操作?

@page "/test"
@using System.Net.NetworkInformation;
@using System.Text;
<link href="~/css/" rel="stylesheet" />
<h1>Counter</h1>
<p>Current count: @currentCount</p>
<form>
<button class="btn btn-primary" @onclick="PingDevice">Click me</button>
</form>

@code {

private int currentCount = 0;
private void PingDevice()
{
try
{
Ping pingSender = new Ping();
PingOptions options = new PingOptions();
// Use the default Ttl value which is 128,
// but change the fragmentation behavior.
options.DontFragment = true;
// Create a buffer of 32 bytes of data to be transmitted.
string data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
byte[] buffer = Encoding.ASCII.GetBytes(data);
int timeout = 120;
PingReply reply = pingSender.Send("192.168.0.1", timeout, buffer, options);
if (reply.Status == IPStatus.Success)
{
currentCount = 1;
}
else
{
currentCount = 0;
}
}
catch (Exception)
{

}

}
}

我想尝试在blazor webassembly中使用ping类ping一些设备项目

我认为那是不可能的。时期。

看,为了做到这一点,你需要一个套接字。这不是你可以从web组装中打开的东西。为了发出真正的ping,您必须输出ICMP数据包(并获得应答)。这在浏览器中根本无法实现。

https://github.com/WebAssembly/design/issues/1251

显示所以…

"然而,即使你可以使用现有的C/c++ api,它也会在内部使用WebSockets进行连接,所以你的服务器必须接受WebSockets。WebSockets只支持TCP。">

这使得PING和PING类无法使用。

https://www.linkedin.com/pulse/technical-due-diligence-wasm-ian-eyberg/

也表示这个。

"首先,asm不处理原始套接字。WASM只使用TCP的websockets,但这意味着你不能生成自己的TCP——你必须使用websockets。">

"原始套接字永远不会实现,因为这是一个巨大的安全问题。">

你可以在服务器端使用BLAZOR(因为在服务器端你是作为。net应用运行的),但不能在浏览器中使用webassembly。

如果有人有其他信息,请纠正我。

相关内容

  • 没有找到相关文章

最新更新