gpt4 book ai didi

c# - .NET 可移植类库和 UDP 支持

转载 作者:可可西里 更新时间:2023-11-01 03:02:12 27 4
gpt4 key购买 nike

我正在为飞利浦 Hue Lights 编写 C# 库。我正在尝试在 .NET 可移植集中编写基本 API 包装器,这样我就可以将这个库重新用于各种平台,例如 Windows 8/RT/WP。 API 本身全部通过 HTTP 使用 REST,因此 HttpWebRequest 将满足我的大部分需求。

可以使用 SSDP over UDP 发现控制灯本身的网桥。但是,我无法在可移植类库 (PCL) 中找到使用 UDP 套接字的方法。

没有可用的 System.Net.SocketsSystem.Net 命名空间中也没有任何内容允许它。我在 Windows.Networking.Sockets 中看到了 DatagramSocket,但在 Intellisense 中看不到该命名空间。

有谁知道如何在 .NET PCL 下为 SSDP 获取 UDP 功能?

我真的不想将发现功能与核心库分开。

现在我的目标是 .NET 4.5 + SL 5 + WP 8 + .NET for Windows Store。我的印象是套接字仍然可用。

最佳答案

WinRT 和 WPF 应用之间的套接字支持没有共同的交集,因此在针对它们的 PCL 项目中不可用。

我有一个针对与 UDP 发现网络交互的 WPF 和 WinRT 的 PCL 库,我想出的最干净的实现涉及在 PCL 库中创建一个 IUDPSocket 接口(interface),该接口(interface)定义用于发送/接收数据和连接到多播组的成员. WPF 应用程序使用 System.Net.Sockets.Socket 实现我的 IUDPSocket,而 RT 应用程序使用 Windows.Networking.Sockets.DatagramSocket 实现它。

我的发现网络客户端类(在 PCL 项目中定义)的构造函数接受一个用于创建 IUDPSocket 实例的委托(delegate)。我这样做而不是传递初始化的 IUDPSocket 实例,因此调用代码不必知道涉及哪个端口或地址。

关于c# - .NET 可移植类库和 UDP 支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14283746/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com