2013-03-24 2 views
0

Я внедрил простой веб-клиент для загрузки файлов на веб-сервер. Вот соответствующая часть моего кода:C# webclient on WIFI

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; 

    } 

При попытке загрузить файл через Wi-Fi это очень медленно (хотя моя сила сигнала WiFi идеально). Загрузка происходит примерно каждые 5 секунд, а затем чаще всего продолжается, но иногда нет. Прекращение загрузки - моя самая большая проблема, потому что это не вызовет никакой ошибки (без тайм-аута или чего-то еще). Когда я подключаю свой ноутбук к сетевому кабелю, проблем нет, и загрузка заканчивается в кратчайшие сроки. Может кто-нибудь мне помочь?

Я также попробовал тот же код в своем университете, где он работает нормально. Там есть сеть WPA, где я здесь, в WEP-подписанном сетевом сете.

+2

Вы пробовали использовать speedtest на вашем Wi-Fi? Webclient не различает Wifi v/s ethernet (он фактически находится на другом уровне OSI). –

+0

ping 21ms downloadspeed 0.27mbs uploadspeed 0.86mbs – user1766412

+0

Файл составляет 3 мб и занимает более 3 минут. Самая большая проблема заключается в том, что я вижу, как он замораживается при обратном вызове загрузки, какие-либо идеи? – user1766412

ответ

0

У вас или ваших соседей есть одно из следующих действий: Microwave, Smartphone, Another Wifi AP, Bluetooth radio, DECT cordless phone, Car, Zigbee or any other 2.4GHz radio source? Похоже, в вашей сети есть прерывистые упавшие пакеты. Помните, что есть несколько элементов, которые могут отбросить мяч в сети. В жилом помещении я лично обнаружил, что уровень PHY для Wifi работает очень сильно (но достаточно для большинства людей, поскольку стек TCP имеет тенденцию хорошо обрабатывать упавшие пакеты).

Офисы, как правило, не имеют так много источников 2,4 ГГц, что и у себя дома.

Попробуйте отключить электроприборы ваших соседей. Необходимо небольшое устройство EMP. В качестве альтернативы вы можете попытаться защитить свой дом от выбросов ЭМ соседей, используя обложку из оловянной фольги, построив так называемый Faraday Cage. Не забудьте указать tin foil hat *. Это уменьшит выбросы ЭМ из вашего мозга, препятствуя передаче.

Также попробуйте изолировать свои устройства WIFI от сети. Прикрепите их с помощью защиты от перенапряжений, это может помочь уменьшить помехи от таких устройств, как стиральная машина и телевизор (или, в моем случае, один раз, пара HomePlugs), которые могут вызвать линейный шум от создания радиошумов.

Наконец, вы можете попробовать переключить свой WIFI-канал на 5 ГГц, если все они работают на этой частоте. Это должно быть яснее. Однако, в конечном счете, поскольку все больше людей используют радиодиапазон 2,4 ГГц, WIFI будет ухудшаться.

^Этот пользователь SO не оправдывает использование оружия электронной/ядерной войны с целью снижения количества упакованных пакетов на вашем домашнем Wi-Fi.

* NB Крышка из оловянной фольги включена в юмор, поскольку я знаю, как построение клетки Фарадея в вашем доме будет выглядеть для ваших соседей.