के साथ नेटवर्क स्थितियों को अनुकरण करें मैं सॉकेट में नेटवर्क अनुकरण जोड़ने का एक तरीका ढूंढ रहा हूं।सी/सी ++ सॉकेट
मूल समाधान बैंडविड्थ सीमा को कनेक्शन में जोड़ने का कोई तरीका होगा।
मेरे लिए आदर्श समाधान होगा:
- समर्थन उन्नत नेटवर्क संपत्तियों (विलंबता, पैकेट हानि)
- ओपन-सोर्स
- मानक सॉकेट (या उनके आसपास wraps) के रूप में एक ऐसी ही एपीआई है दोनों विंडोज और लिनक्स
- समर्थन IPv4 और IPv6
मैंने कुछ विकल्प देखा जो सिस्टम स्तर पर काम करते हैं, या यहां तक कि प्रॉक्सी (डमीनेट, वैनेम, नेटन इत्यादि) के रूप में भी काम करते हैं, लेकिन यह मेरे लिए काम नहीं करेगा, क्योंकि मैं प्रत्येक सॉकेट मैन्युअल रूप से अनुकरण करने में सक्षम होना चाहता हूं (उदाहरण के लिए, मॉडेम इम्यूलेशन के साथ एक सॉकेट खोलें और एक 3 जी अनुकरण के साथ। असल में मैं जानना चाहता हूं कि ये उपकरण कैसे करते हैं।
संपादित करें: मुझे इस कार्यक्षमता को अपने उत्पाद में एम्बेड करने की आवश्यकता है, इसलिए मैन्युअल कॉन्फ़िगरेशन की आवश्यकता वाले अतिरिक्त बॉक्स या तृतीय-पक्ष टूल का उपयोग करना स्वीकार्य नहीं है। मैं कोड लिखना चाहता हूं जो वही काम करता है जैसे कि उपकरण करते हैं, और मेरा सवाल यह है कि यह कैसे करें।
एपिलोग: हिंडसाइट में, मेरा प्रश्न थोड़ा भ्रामक था। जाहिर है, मैं जो सॉकेट पर सीधे चाहता था उसे करने का कोई तरीका नहीं है। वहाँ दो विकल्प हैं:
भेजने के लिए देरी जोड़ें/आपरेशन (@ PaulCoccoli के जवाब के आधार पर) प्राप्त करते हैं: भेजने और प्राप्त करने से पहले एक देरी जोड़कर
, तो आप एक बहुत ही कच्चे तेल नेटवर्क सिमुलेशन (के लिए निरंतर देरी प्राप्त कर सकते हैं विलंबता, बैंडविड्थ के लिए प्रति सेकंड एक्स बाइट्स से अधिक नहीं भेजने के लिए भेजने में देरी)।
पॉल का जवाब और टिप्पणी मेरे लिए बहुत प्रेरणा थी, इसलिए मैंने उन्हें बक्षीस दिया।
एक प्रॉक्सी (@ m0she और दूसरों का जवाब के आधार पर) के रूप में नेटवर्क अनुकरण तर्क जोड़ें:
या तो प्रॉक्सी के माध्यम से अनुरोध भेज सकते हैं या अनुरोधों को रोक करने के लिए प्रॉक्सी का उपयोग करें, फिर वांछित सिमुलेशन जोड़ें। हालांकि, यह आपके स्वयं के प्रॉक्सी कार्यान्वयन को लिखने के बजाय एक तैयार समाधान का उपयोग करने के लिए और अधिक समझ में आता है - मैंने जो देखा है उससे शायद सबसे अच्छा विकल्प है (यह वही है webpagetest.org करता है)। अन्य विकल्प नीचे दिए गए उत्तरों में हैं, मैं भी DonsProxy
यह भी करने का बेहतर तरीका है, इसलिए मैं इस उत्तर को स्वीकार कर रहा हूं।
सी ++ में सॉकेट नहीं हैं। –
यह एक सी ++ अनुप्रयोग है कि आप ठीक कह रहे हैं - सॉकेट सी (विनसॉक और POSIX) –
सी सॉकेट नहीं है या तो ... ओएस-प्रदान की पुस्तकालयों (सी इंटरफेस के साथ) है। Pedantic नहीं होने के लिए ... :) –