2012-04-23 15 views
5

द्वारा एक डायनेमिक पोर्ट पर फ़ाइल भेजना मैं एक ऐसे अनुप्रयोग के साथ काम कर रहा हूं जो एक टीसीपी प्रोटोकॉल द्वारा फ़ाइल प्राप्त करता है, एप्लिकेशन फ़ाइल को संसाधित करता है और फिर उसी प्रोटोकॉल द्वारा भेजता है, मुझे बिना किसी समस्या के फ़ाइल मिल रही है , मेरी समस्या यह है, जब मैं फ़ाइल भेजने का प्रयास करें क्योंकि मैं किसी अन्य अनुप्रयोग है कि एक गतिशील पोर्ट सुन रहा है, कोड है कि मैं इन फ़ाइलों को भेजने के लिए उपयोग कर रहा हूँ करने के लिए फ़ाइल को भेजने की जरूरत है:एक टीसीपी प्रोटोकॉल

internal void Send(byte[] buffer) 
    { 
     TcpClient _client = null; 
     try 
     { 
      _client = new TcpClient(RemoteIPaddress, Dynamic_port); 

      if (_client != null) 
      { 
       NetworkStream _clienttStream = _client.GetStream(); 
       _clienttStream.Write(buffer, 0, buffer.Length); 
       _clienttStream.Flush(); 
       _clienttStream.Close(); 
       _clienttStream = null; 
      } 
     } 
     catch 
     { 
      if (_client != null) 
      { 
       _client.Close(); 
       _client = null; 
      } 
     } 
    } 

सवाल है, मैं एक दूरस्थ मशीन पर टीसीपी प्रोटोकॉल द्वारा एक फाइल कैसे भेज सकता हूं जो गतिशील पोर्ट

उत्तर

2

का उपयोग करता है आमतौर पर, सर्वर को एक प्रसिद्ध बंदरगाह पर सुनना चाहिए एक कनेक्शन अनुरोध के लिए। प्रतिक्रिया में उस पोर्ट नंबर को शामिल करना चाहिए जिसमें सर्वर आगे संवाद करेगा। फिर आपका ऐप उस स्थान को डेटा स्थानांतरित करने के लिए जोड़ता है।

संचार निम्न करना चाहिए:

  1. क्लाइंट प्रसिद्ध बंदरगाह पर सर्वर से कनेक्ट।
  2. सर्वर आगे संचार के लिए उपयोग करने के लिए गतिशील पोर्ट नंबर के साथ प्रतिक्रिया करता है।
  3. क्लाइंट प्राप्त पोर्ट नंबर पर सर्वर से कनेक्ट होता है।
  4. सर्वर स्थापित स्टेटिंग कनेक्शन का जवाब देता है।
  5. ग्राहक डेटा प्रसारित करता है और डिस्कनेक्ट करता है।

यह एक सरल संस्करण है कि निष्क्रिय एफ़टीपी कैसे काम करता है।

प्वाइंट है, एक गतिशील बंदरगाह पर सर्वर से कनेक्ट करने के केवल दो तरीके हैं। पहला तरीका ऊपर उल्लिखित है। यदि आप इसे इस तरह से नहीं कर सकते हैं तो आपके क्लाइंट ऐप को एक पोर्ट स्कैन करना होगा, एक सीमा के भीतर प्रत्येक बंदरगाह के लिए कनेक्शन प्रयास भेजना होगा, और देखें कि सर्वर किस पर प्रतिक्रिया करता है। हालांकि, फ़ायरवॉल आम तौर पर इस प्रकार की चीज़ों को नोटिस करने के लिए प्रोग्राम किए जाते हैं और आपको बंद कर देते हैं (यह हैकर व्यवहार है)।

1

क्या आप पूछ रहे हैं कि आप रिमोट मशीन का उपयोग करने के लिए चुने गए डायनामिक पोर्ट को कैसे निर्धारित कर सकते हैं? ऐसा करने के लिए कोई स्वचालित तरीका नहीं है। सर्वर को या तो एक बंदरगाह पर काम करना चाहिए कि दोनों मशीनों को पता है या आपको संचार के किसी अन्य माध्यम के माध्यम से बंदरगाह का चयन करने के लिए एक रास्ता तय करना चाहिए। या तो किसी तृतीय पक्ष सर्वर से कनेक्ट करके या उस वेब सेवा को होस्ट करके क्लाइंट एक्सेस कर सकता है।

+0

मुझे यह जानने की ज़रूरत है कि क्लाइंट से डायनेमिक पोर्ट क्या सुन रहा है –