2013-02-27 124 views

उत्तर

65

HTTP एक आवेदन प्रोटोकॉल है। इसका मूल रूप से मतलब है कि एचटीएमएल का उपयोग रिमोट एंड पॉइंट से जानकारी को परिवहन के लिए नहीं किया जा सकता है। इसके बजाय यह एक अंतर्निहित प्रोटोकॉल पर निर्भर करता है जो HTTP के मामले में टीसीपी है।

enter image description here

आप OSI layers के बारे में और अधिक पढ़ सकते हैं यदि आप रुचि रखते हैं।

दूसरी ओर सॉकेट एक एपीआई है जो अधिकांश ऑपरेटिंग सिस्टम नेटवर्क से बात करने में सक्षम होते हैं। सॉकेट एपीआई परिवहन परत और नीचे से विभिन्न प्रोटोकॉल का समर्थन करता है।

इसका मतलब है कि यदि आप टीसीपी का उपयोग करना चाहते हैं तो आप सॉकेट का उपयोग करें। लेकिन आप HTTP का उपयोग करके संवाद करने के लिए सॉकेट का भी उपयोग कर सकते हैं, लेकिन फिर आपको HTTP विनिर्देश (RFC2616) के अनुसार संदेशों को डीकोड/एन्कोड करना होगा। चूंकि अधिकांश डेवलपर्स के लिए यह एक बड़ा काम हो सकता है, इसलिए हमारे डेवलपर फ्रेमवर्क (जैसे .NET) में तैयार ग्राहक भी हैं, उदाहरण के लिए WebClient या HttpWebRequest कक्षाएं।

+0

तो दोनों टीसीपी का उपयोग करते हैं, यह सिर्फ इतना है कि HTTP एक पूर्वनिर्धारित प्रारूप में प्रतिक्रिया करता है और सॉकेट डेटा को एक सॉकेट के दूसरे छोर से वापस लौटाता है, है ना? –

+0

हां। टीसीपी सुनिश्चित करता है कि सब कुछ आता है (परिवहन परत) और HTTP बताता है कि वेब अनुप्रयोगों को क्या करना चाहिए। – jgauffin

19

HTTP के साथ आप उच्च स्तरीय HTTP प्रोटोकॉल का उपयोग करते हैं (जो सॉकेट के शीर्ष पर काम करता है)।

public static void Main (string[] args) 
{ 
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create (args[0]); 
    HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 

    Console.WriteLine ("Content length is {0}", response.ContentLength); 
    Console.WriteLine ("Content type is {0}", response.ContentType); 

    // Get the stream associated with the response. 
    Stream receiveStream = response.GetResponseStream(); 

    // Pipes the stream to a higher level stream reader with the required encoding format. 
    StreamReader readStream = new StreamReader (receiveStream, Encoding.UTF8); 

    Console.WriteLine ("Response stream received."); 
    Console.WriteLine (readStream.ReadToEnd()); 
    response.Close(); 
    readStream.Close(); 
} 

के साथ: यह सत्र-कम आप GET google.com की तरह पाठ अनुरोध भेजने और उसके बाद कनेक्शन बंद कर दिया है

MSDN उदाहरण (HTTP 1.1 लगातार कनेक्शन उपलब्ध हैं में), बदले में पाठ या बाइनरी डेटा प्राप्त जिसका अर्थ है है सॉकेट आप निम्न स्तर पर जाते हैं और वास्तव में कनेक्शन को नियंत्रित करते हैं और कच्चे बाइट भेजते हैं/प्राप्त करते हैं।

उदाहरण:

var remoteEndpoint=new IPEndPoint(IPAddress.Loopback, 2345); 
var socket = new Socket(remoteEndpoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp); 
socket.Connect(remoteEndpoint); 
socket.Send(new byte[] {1, 2, 3, 4}); 
+0

कनेक्शन HTTP 1.1 से बंद नहीं है। – EJP

+0

@EJP: इस पर निर्भर करता है कि 'कनेक्शन' हेडर कैसे सेट किया गया है;) – jgauffin

+0

@jgauffin बिल्कुल। यह willy-nilly बंद नहीं है। – EJP

1

HTTP प्रोग्रामिंग या HTTP अनुरोध शिथिल युग्मन और मंच के तटस्थ भाषा प्रौद्योगिकी संचार जहां सॉकेट प्रोग्रामिंग के रूप में जहां प्रणाली भाषा विनिर्देश प्रोटोकॉल प्रयोग किया जाता है के लिए प्रयोग किया जाता है

+1

भाषा से आपका क्या मतलब है? एक जावा एप्लिकेशन उदाहरण के लिए सॉकेट के माध्यम से एक पायथन एप्लिकेशन के साथ संवाद कर सकता है –

2

HTTP कनेक्शन

  • HTTP कनेक्शन एक प्रोटोकॉल है जो सॉकेट पर चलता है।
  • HTTP कनेक्शन नेटवर्क कनेक्शन का एक उच्च स्तरीय अबास्ट्रक्शन है।
  • HTTP कनेक्शन के साथ कार्यान्वयन इन सभी उच्च स्तरीय विवरणों का ख्याल रखता है और केवल HTTP अनुरोध (कुछ शीर्षलेख जानकारी) भेजता है और सर्वर से HTTP प्रतिक्रिया प्राप्त करता है।

सॉकेट कनेक्शन

  • सॉकेट प्रणालियों के बीच डेटा के परिवहन के लिए प्रयोग किया जाता है। यह बस दो प्रणालियों को एक साथ जोड़ता है, एक आईपी पता मशीन का आईपी आधारित नेटवर्क पर पता है।
  • सॉकेट कनेक्शन के साथ आप दो सिस्टम के बीच नेटवर्क कनेक्शन के लिए अपना प्रोटोकॉल डिज़ाइन कर सकते हैं।
  • सॉकेट कनेक्शन के साथ आपको टीसीपी/आईपी कनेक्शन के सभी निम्न-स्तर के विवरणों का ख्याल रखना होगा।