在wp8和windows rt之间发送文件

时间:2013-04-17 17:35:49

标签: c#-4.0 windows-phone-8 windows-rt

我一直试图弄清楚是否可以在wp8设备和windows rt(Surface)之间发送文件。有些人似乎写道这是可能的,但他们从未写过如何做到这一点。

所以我想要做的是1.在wp8设备上用我的应用程序录制视频并将其保存到隔离存储中(此时此处是我所在的位置)2。发送视频(约20分钟录制时间) )到我的Windows rt设备3.在rt设备上播放视频。第1步& 3很简单,但第2步让我发疯。我一直在考虑使用蓝牙,但由于速度只有700kbit / s左右,因此转移它需要永远。在隔离存储中,Usb是不行的。 Skydrive需要3g。所以我想的是在我的wp8设备上启动互联网共享,然后将我的windows rt设备连接到它,当它完成时使用wifi将视频从wp8发送到win rt。

这有什么办法可行还是不可能?

2 个答案:

答案 0 :(得分:2)

如果您的设备位于同一Wi-Fi网络中,则可以使用它来发送文件。对细节进行着色,可以通过两个步骤实现:

  1. 让设备在网络中相互发现(他们应该知道对方的IP地址)。
  2. 通过tcp套接字实现文件发送。最简单的方法是将文件拆分成一些任意但很小的块,然后一个接一个地发送这些块。
  3. 当然,这是一个高级别的描述,所以如果您需要上述主题的进一步帮助,请随时提问。

    编辑: This url表示可以收听传入的网络连接,因为相关的类可用于Windows应用商店应用和Windows Phone 8.您可以将其用作起点。

    编辑1:我很快为您举了一个例子来证明它有效。刚刚在我的Lumia 920上进行了测试。

    Windows.Networking.Sockets.StreamSocketListener listener = new Windows.Networking.Sockets.StreamSocketListener();                    
    listener.ConnectionReceived += async (_, args) =>
    {
        var w = new Windows.Storage.Streams.DataWriter(args.Socket.OutputStream);
        w.WriteInt32(42);
        await w.StoreAsync();
    };
    await listener.BindEndpointAsync(new Windows.Networking.HostName("127.0.0.1"), "55555");
    var clientSocket = new Windows.Networking.Sockets.StreamSocket();
    await clientSocket.ConnectAsync(new Windows.Networking.HostName("127.0.0.1"), "55555");
    
    var r = new Windows.Storage.Streams.DataReader(clientSocket.InputStream);
    await r.LoadAsync(4);
    var res = r.ReadInt32();
    clientSocket.Dispose();
    System.Windows.MessageBox.Show(res.ToString(), "The Ultimate Question of Life, the Universe, and Everything", System.Windows.MessageBoxButton.OK);
    

答案 1 :(得分:0)

这是您尝试在代码中执行的操作吗? 您的平均文件大小是多少 - 我们是在谈论低分辨率320x480还是高清质量720p +视频......? 你有什么限制? (时间,连通性等)

您可以设置Dropbox进行转移。免费版本的空间有限(如果你共享的话,会更多),但如果你根据需要将文件移入和移出Dropbox,那么你至少可以设置它并忘记它。这仍然需要网络连接,所以如果你需要在旅途中这样做,这可能不是一个好的答案。

如果这是您在迪士尼乐园度假或野营或其他类似活动时需要做的事情,那么这可能不是一个可行的选择。