【问题标题】:Install System.Net.Sockets on xamarin forms pcl在 xamarin 表单 pcl 上安装 System.Net.Sockets
【发布时间】:2017-04-10 13:28:47
【问题描述】:

我有问题。我需要在 xamarin 表单上使用 TcpClient,但不会安装“System.Net.Sockets”。我无法使用 Nuget 安装它。

错误是:

无法安装软件包“System.Net.Sockets 4.3.0”。你在尝试 将此软件包安装到目标项目中 '.NETPortable,Version=v4.6,Profile=Profile44',但包确实 不包含任何程序集引用或内容文件 与该框架兼容。如需更多信息,请联系 包作者。

在 iOS 和 Android 项目上可以安装,但在便携式项目上无法安装。

我该如何解决这个问题?

谢谢

【问题讨论】:

  • 好吧,如果您可以将它安装在 iOs 和 android 中,那么您已经成功了一半,您可以从可移植类中调用它们。因为如果它不能安装在 PCL 上,你可以做的只是一点点,其中一点就是复制“System.Net.Sockets 4.3.0”的代码。并使用您需要的类。可能它使用了 PCL 不支持的其他一些库
  • developer.xamarin.com/api/namespace/System.Net.Sockets 这里为 pcl 存在...在 xamarin 表单中支持这个

标签: c# sockets xamarin.forms tcpclient system.net.sockets


【解决方案1】:

请参阅thread,了解为什么无法将套接字类安装到 PCL 项目中,即使 Xamarin.iOS 和 Xamarin.Android 支持它。

除了使用一些支持 PCL 的 socket nuget 包外,您还可以选择将 System.Net.Socket 安装到 Android 和 iOS,并通过 DependencyServices. 调用它们

【讨论】:

    【解决方案2】:

    你应该试试this plugin

    tpc 监听器

    var listenPort = 11000;
    var listener = new TcpSocketListener();
    
    // when we get connections, read byte-by-byte from the socket's read stream
    listener.ConnectionReceived += async (sender, args) => 
    {
        var client = args.SocketClient; 
    
        var bytesRead = -1;
        var buf = new byte[1];
    
        while (bytesRead != 0)
        {
            bytesRead = await args.SocketClient.ReadStream.ReadAsync(buf, 0, 1);
            if (bytesRead > 0)
                Debug.Write(buf[0]);
        }
    };
    
    // bind to the listen port across all interfaces
    await listener.StartListeningAsync(listenPort);
    

    否则您可以尝试在特定于平台的代码中实现 Socket..

    【讨论】:

    • 嗨 alessandro,现在我使用这个插件,但是异步模式丢失了接收字节
    • 我认为你可以在 Github 上打开一个问题
    猜你喜欢
    • 1970-01-01
    • 2017-07-02
    • 1970-01-01
    • 1970-01-01
    • 2020-07-01
    • 2023-03-21
    • 2017-05-04
    • 2018-03-08
    • 2015-04-24
    相关资源
    最近更新 更多