0

我一直在试图弄清楚是否可以在 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 发送视频以赢得 rt。

有什么办法可以工作还是这是不可能的?

4

2 回答 2

2

如果您的设备在同一个 Wi-Fi 网络中,您可以使用它来发送文件。忽略细节,这可以通过两个步骤来实现:

  1. 使设备在网络中相互发现(它们应该知道彼此的 IP 地址)。
  2. 实现通过 tcp 套接字发送文件。最简单的方法是将文件分割成一些任意但很小的块,然后一个接一个地发送这些块。

当然,这是一个高级描述,所以如果您在上述主题方面需要进一步的帮助,请随时提出。

编辑: 这个 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);
于 2013-04-18T10:25:20.853 回答
0

这是您要在代码中尝试做的事情吗?您的平均文件大小是多少 - 我们说的是低分辨率 320x480 还是高清质量 720p+ 视频...?你有什么限制?(时间、连接性等)

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

如果这是您在迪斯尼世界度假或露营或类似活动时需要做的事情,它可能不是一个可行的选择。

于 2013-04-17T17:46:03.357 回答