2013-03-24 114 views
0

我實現了一個簡單的Webclient將文件上傳到Web服務器。這裏是我的代碼的相關部分:WIFI上的C#webclient

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它是非常緩慢(雖然我的無線信號強度是完美的)。上傳每5秒停止一次,然後大多數情況下會繼續,但有時不會。上傳停止是我最大的問題,因爲它不會拋出任何錯誤(沒有超時或其他)。當我將筆記本電腦連接到以太網電纜時,沒有任何問題,上傳完成。有人可以幫我嗎?

我也在我的大學嘗試過相同的代碼,它似乎工作正常。有一個WPA網絡在那裏,我在這裏的WEP簽署netwerk。

+2

你有沒有試過在你的wifi上運行speedtest? Webclient不區分Wifi v/s以太網(它實際上位於不同的OSI層)。 – 2013-03-24 16:12:27

+0

ping 21ms下載速度0.27mbs上傳速度0.86mbs – user1766412 2013-03-24 16:19:42

+0

該文件爲3 MB,需要3分多鐘才能完成。最大的問題是,我看到它凍結在上傳進度回調,任何想法? – user1766412 2013-03-24 16:24:12

回答

0

你或你的鄰居是否擁有以下任何一種:Microwave, Smartphone, Another Wifi AP, Bluetooth radio, DECT cordless phone, Car, Zigbee or any other 2.4GHz radio source?這聽起來像是網絡中存在間歇性丟包。請記住,有多個元素可以在網絡中放置球。在住宅環境中,我個人發現Wifi PHY層的性能非常糟糕(但對大多數人來說足夠好,因爲TCP堆棧可以很好地處理掉包)。

辦公室通常沒有家中那麼多的2.4GHz信號源。

嘗試斷開鄰居的電器。一個小的EMP設備應該足夠了^。或者,您可以嘗試使用錫紙牆紙將您的房屋從鄰居的電磁輻射中屏蔽掉,構建所謂的Faraday Cage。請記住包含一個tin foil hat *。這將減少你的大腦對轉移的干擾。

也嘗試隔離您的WIFI設備與主電源。使用電涌保護器連接它們,這可以幫助減少洗衣機和電視機(或者我的情況,一次,一對HomePlugs)等器具對可能導致無線電噪音產生線路噪音的干擾。

最後你可以嘗試將你的WIFI頻道切換到5GHz,如果他們都在這個頻率上工作。其意圖更清晰。然而,隨着更多人使用2.4GHz無線電範圍,WIFI將會變得更糟。

^這個SO用戶不會容忍電子/核戰爭武器的使用,目的是減少你家庭無線上的丟包。

*請注意錫箔帽是幽默的,因爲我知道如何在你家建造一個法拉第籠將看向你的鄰居。