2010-12-30 16 views
9

का उपयोग कर फ़ाइल अपलोड करने और डाउनलोड करने की गति परीक्षण करना मैं जावा का उपयोग कर डेस्कटॉप एप्लिकेशन में काम कर रहा हूं। मेरे आवेदन में मुझे एक स्पीड टेस्ट करना है जो फ़ाइल अपलोड करने और डाउनलोड करने की गति दिखाएगा।एफ़टीपी

परीक्षण अपलोड करने के लिए मैं एक FTP सर्वर पर एक छोटी टेस्ट फ़ाइल अपलोड कर रहा हूं और समय पर आधारित फ़ाइल अपलोड की गति की गणना कर रहा हूं। इसी प्रकार मैं एक परीक्षण फ़ाइल फॉर्म सर्वर डाउनलोड कर रहा हूं और डाउनलोड की गति की गणना कर रहा हूं।

लेकिन परिणामस्वरूप मुझे वास्तविक एफ़टीपी फ़ाइल अपलोड करने और डाउनलोड करने के साथ मेल नहीं मिल रहा है। ऐसा लगता है कि एफ़टीपी सर्वर से स्थापित कनेक्शन समय बढ़ रहा है, इसलिए परिणामस्वरूप गति मैं गणना कर रहा हूं।

 public int getTransferRate(File filename) 
    {   
     int trRate = 0; 

     try { 

     OutputStream fout = null; 
     InputStream bin = null; 

     connect(ftpUser,ftpPass,ftpServer); 


     ftp.setFileType(FTPSClient.BINARY_FILE_TYPE); 
     ftp.enterLocalPassiveMode(); 
     fout = ftp.storeFileStream("testuploadfile"); 

     bin = new FileInputStream(filename); 
     byte[] b = new byte[8192]; 
     int bytesRead = 0; 

     long startTime = System.currentTimeMillis(); 
     long endTime = 0; 
     while ((bytesRead = bin.read(b)) != -1) { 
      fout.write(b, 0, bytesRead); 
      bytesUploadedSet += bytesRead; 
     } 
     endTime = System.currentTimeMillis(); 
     trRate = (int) ((float) bytesUploadedSet/(endTime - startTime)); 

    } catch (IOException ex) { 
     Logger.getLogger(FTPFileStorageService.class.getName()).log(Level.SEVERE, null, ex); 
    } 
    return trRate; 
} 

आप किसी भी लिंक या किसी तरह निकटतम अपलोड करने और डाउनलोड करने की गति प्राप्त करने के लिए सुझाव है कि कर सकते हैं:

यहाँ फ़ाइल अपलोड कोड मैं का उपयोग कर रहा है।

मैं आपके सभी मूल्यवान सुझावों के लिए धन्यवाद।

+0

आप प्रदर्शित करने के लिए कैसे आप हस्तांतरण आरंभ करने और गति की गणना कर रहे हैं एक (न्यूनतम) कोड नमूना पोस्ट कर सकते हैं? – SimonJ

उत्तर

1

सबसे पहले, फाइलज़िला शायद मूल कोड का उपयोग करता है जो आप उपयोग कर रहे हैं उससे तेज़ होगा।

परीक्षण के लिए, कनेक्शन स्थापित करें और लगभग 20 या उससे अधिक फ़ाइलों को अपलोड करने का प्रयास करें .. परिणाम के बारे में एक अच्छा विचार देना चाहिए ... इसी तरह, अपने आउटपुट को अल्पविराम से अलग परीक्षण फ़ाइल या किसी चीज़ पर लॉग भी करें, जिसे आप बाद में एक्सेल और विश्लेषण में आयात कर सकते हैं। यदि आप कुछ हार्ड कोर प्रदर्शन परीक्षण करना चाहते हैं तो आप जेएमटर की तरह कुछ उपयोग कर सकते हैं ..

किसी भी प्रकार के प्रदर्शन परीक्षण में बड़े नमूना आकार (नमूना परिणाम के बहुत सारे) में सबसे सटीक परिणाम मिलते हैं।

http://jmeter.apache.org/

1

क्या आप कनेक्शन स्थापित होने के बाद टाइमर शुरू करने में सक्षम नहीं हैं?

यदि त्वरित त्वरित समाधान के लिए नहीं, तो परीक्षण फ़ाइल के आकार को बढ़ाएं, जितना बड़ा होगा, कनेक्शन ओवरहेड कम महत्वपूर्ण होगा।

आप, तो मैं अधिक भाव अनुभव के साथ किसी को स्थगित कर देंगे और अधिक सटीक होना करने के लिए की जरूरत है ...

+0

उत्तर देने के लिए धन्यवाद, मैं अपलोड परीक्षण के लिए 2 एमबी फ़ाइल की कोशिश कर रहा हूं और कनेक्शन स्थापित करने के बाद टाइमर शुरू कर रहा हूं लेकिन जब मैं फ़ाइल ट्रांसफर के लिए फाइलज़िला का उपयोग कर रहा हूं तो यह लगभग 100 केबीपीएस दिखाता है लेकिन परीक्षण में मुझे अधिकतम 65 केबीपीएस मिल रहा है। सटीक परिणाम न मिलने के कारण, और क्या कारण हो सकता है? – Toman

0

आप जैसे HTTP के रूप में एक सरल प्रोटोकॉल का उपयोग कर सकते हैं?

एक एफ़टीपी हस्तांतरण स्थापित करना स्पष्ट रूप से हो सकता है: अलग नियंत्रण और डेटा कनेक्शन स्थापित करने की आवश्यकता है, और दोनों एंडपॉइंट्स को इस बात पर सहमत होना चाहिए कि फ़ायरवॉल और एनएटी के आसपास निष्क्रिय या सक्रिय मोड का उपयोग करना है या नहीं। इस प्रक्रिया में केवल विकल्पों में से एक को कोशिश करना शामिल है (उदा। सक्रिय) और सफलता या टाइमआउट की प्रतीक्षा करना, जो आपके माप को विकृत कर सकता है।

+0

उत्तर देने के लिए धन्यवाद। चूंकि मेरा एप्लिकेशन फ़ाइल स्थानांतरण के लिए एफ़टीपी का उपयोग करता है, इसलिए इसे एफ़टीपी गति की गणना करने की आवश्यकता होती है। और HTTP का उपयोग करने के लिए फ़ायरवॉल सक्षम होने पर व्यवस्थापक से कुछ अनुमतियों को http की अनुमति देने की आवश्यकता होती है। – Toman

संबंधित मुद्दे