सॉकेट प्रोग्रामिंग और Http प्रोग्रामिंग के बीच अंतर


जवाबों:


109

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

यहां छवि विवरण दर्ज करें

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

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

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


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

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

25

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

MSDN उदाहरण:

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 ();
} 

सॉकेट्स के साथ आप निचले स्तर पर जाते हैं और वास्तव में कनेक्शन को नियंत्रित करते हैं और कच्चे बाइट्स भेजते / प्राप्त करते हैं।

उदाहरण:

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});

HTTP 1.1 से कनेक्शन बंद नहीं हुआ है।
लोर्न का मार्की

@ ईजेपी: Connectionहेडर कैसे सेट होता है, इस पर निर्भर करता है;)
jgauffin

@jgauffin बिल्कुल। यह विली-नीली बंद नहीं है।
लोर्ने की मार्कीट

सच है, लेकिन यह विवरण ओपी इस विषय पर अन्य 95% जानकारी के साथ खुद को खोजेगा।
अरी

13

HTTP कनेक्शन

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

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

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

1

HTTP प्रोग्रामिंग या HTTP अनुरोध का उपयोग शिथिल युग्मन और प्लेटफ़ॉर्म-न्यूट्रल भाषा तकनीक संचार के लिए किया जाता है, जहाँ सॉकेट प्रोग्रामिंग का उपयोग किया जाता है, जहाँ सिस्टम भाषा सुरक्षा प्रोटोकॉल


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

मुझे लगता है कि उनका क्या मतलब है, आमतौर पर, यदि आप शिथिल युग्मित (या पूरी तरह से अलग) सिस्टम से कनेक्ट करना चाहते हैं, तो HTTP उपयोगी है: एक ऐसी तकनीक के साथ बनाया गया एक बैकेंड जो किसी अन्य तकनीक के साथ समर्थित है, URL पर वेब के माध्यम से संसाधनों तक पहुंच बना रही है। जबकि आमतौर पर यदि आप टीसीपी / यूडीपी जैसे निचले स्तर के कनेक्शन प्रोटोकॉल का उपयोग कर रहे हैं, तो आप संभवतः समान तकनीकों वाली प्रणालियों (जैसे अलग-अलग जावा एप्लिकेशन) के साथ संचार को ऑर्केस्ट्रेट कर रहे हैं। क्या यह सही है? मैं इसे खुद समझने की कोशिश कर रहा हूं।
निकोला अमादियो

0

दो समापन बिंदु एक दूसरे से बात करने में सक्षम होने के लिए वे दोनों को नियमों के एक सेट का पालन करना चाहिए। कंप्यूटर में इन नियमों के सेट को प्रोटोकॉल कहा जाता है।

उदाहरण के लिए ब्राउज़र जैसे एंडपॉइंट के लिए और वेब सर्वर की तरह एक और के लिए, उन्हें नियमों या प्रोटोकॉल के एक सेट का पालन करना चाहिए, जिसे http कहा जाता है, जो संचार और व्यापार की जानकारी देने में सक्षम हो। इसलिए वर्ल्ड वाइड वेब और इस तरह के संचार में जो केवल इस http प्रोटोकॉल के आधार पर बात करते हैं वे सफलतापूर्वक एक दूसरे से बात कर सकते हैं।

सॉकेट सिर्फ एक समापन बिंदु है। यह www में एक संचार में आने के लिए http प्रोटोकॉल का पालन कर सकता है जो एक पेज का अनुरोध करने वाले ग्राहक के रूप में हो सकता है या यह कनेक्शनों को सुनने वाले सर्वर के रूप में कार्य कर सकता है। या हो सकता है कि यह दूसरे प्रकार के नियमों या प्रोटोकॉलों का पालन करे, जैसे ssh, ftp और अन्य तरीकों से संवाद करना।

अब सॉकेट प्रोग्रामिंग में आप एक सॉकेट बना सकते हैं, इसे एक आईपी पते और एक पोर्ट नंबर पर पोर्ट नंबर के रूप में कार्य करने के लिए बांध सकते हैं और इसे http, ssh, ftp या जो भी आप संचार के आधार पर चाहते हैं, का अनुसरण करने के लिए कहें। के लिए सॉकेट।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.