目标.NET 4.5.1,Windows 8.1和Windows Phone 8.1的PCL中不存在任何套接字API(System.Net.Sockets,System.Net.WebSockets,Windows.Networking.Sockets命名空间)。我有哪些网络选项可以访问输入和输出流?
答案 0 :(得分:1)
完整的.Net 4.5.1 Framework(使用System.Net)和Windows运行时(使用Windows.Networking)之间没有任何共同的套接字API。由于PCL允许所有PCL目标的API交叉,这意味着该PCL中没有直接可用的Socket API。您必须在平台特定代码中打开套接字。
所有这些目标都支持.Net Streams,因此一旦您在平台特定代码中打开套接字,您就可以将套接字流传递到PCL进行处理。
您可以使用Inversion of Control让PCL在必要时从主机请求流。 PCL可以定义主机可以实现的接口(例如,IPlatformSpecificCode)。当PCL想要打开网络连接时,它可以调用IPlatformSpecificCode.OpenPlatformSpecificSocket(地址,端口),主机可以打开System.Net.Sockets.Socket或Windows.Networking.Sockets.StreamSocket并返回.Net流PCL使用。