0

我实现了一个简单的 Webclient 来将文件上传到 Web 服务器。这是我的代码的相关部分:

 private bool fileUploadValid = new bool();
    string fileLocation = "D:/testvideo.avi";
    WebClient client = new WebClient();

    public MainWindow()
    {
        InitializeComponent();

        client.UploadFileCompleted += new UploadFileCompletedEventHandler(UploadFileCallback);

        // Specify a progress notification handler.
        client.UploadProgressChanged += new UploadProgressChangedEventHandler(UploadProgressCallback);
        client.Headers.Add("Content-Type", "binary/octet-stream");

        UploadFileInBackground("http://xxx/videolibrary/fileUpload.php", fileLocation);
    }

    public void UploadFileInBackground(string address, string fileName)
    {

        Uri uri = new Uri(address);
        client.UploadFileAsync(uri, "POST", fileLocation);


        Console.WriteLine("File upload started.");
       // fileUploadValid = false;

    }

当我尝试通过 wifi 上传文件时,速度非常慢(尽管我的 wifi 信号强度非常好)。上传大约每 5 秒停止一次,然后通常会继续,但有时不会。停止上传是我最大的问题,因为它不会抛出任何错误(没有超时或其他任何错误)。当我将笔记本电脑连接到以太网电缆时,没有问题,上传很快就完成了。有人可以帮帮我吗?

我还在我的大学尝试了相同的代码,它似乎工作正常。那里有一个 WPA 网络,我在 WEP 签名的网络上。

4

1 回答 1

0

您或您的邻居是否拥有以下任何设备:微波炉、智能手机、另一个 Wifi AP、蓝牙无线电、DECT 无绳电话、汽车、Zigbee 或任何其他 2.4GHz 无线电源?听起来您的网络中存在间歇性丢弃的数据包。请记住,有多个元素可以在网络中丢球。在住宅环境中,我个人发现 Wifi PHY 层的性能非常非常差(但对大多数人来说已经足够了,因为 TCP 堆栈倾向于很好地处理丢弃的数据包)。

办公室往往没有家里那么多的 2.4GHz 信号源。

尝试断开邻居的电器。一个小型 EMP 设备就足够了^。或者,您可以尝试使用锡箔墙纸保护您的房子免受邻居电磁辐射的影响,构建所谓的法拉第笼。记得包括一顶锡纸帽子*。这将减少大脑中干扰传输的电磁辐射。

还可以尝试将您的 WIFI 设备与电源隔离。使用电涌保护器连接它们,这有助于减少来自洗衣机和电视等设备的干扰(或者在我的情况下,曾经是一对HomePlugs),这些设备可能会导致线路噪声产生无线电噪声。

最后,如果它们都在该频率上工作,您可以尝试将 WIFI 频道切换到 5GHz。它的意思是更清楚。然而,最终随着越来越多的人使用 2.4GHz 无线电范围,WIFI 会变得更糟。

^此 SO 用户不容忍使用电子/核战争武器来减少家庭 wifi 上的丢包。

*NB 锡箔帽是为了幽默,因为我知道在你的房子里建造一个法拉第笼对你的邻居来说会是什么样子。

于 2013-03-25T02:51:51.903 回答