Qual è la differenza tra la programmazione socket e la programmazione Http? Qualcuno può aiutare, per favore?
Qual è la differenza tra la programmazione socket e la programmazione Http? Qualcuno può aiutare, per favore?
Risposte:
HTTP è un protocollo dell'applicazione. Fondamentalmente significa che HTTP stesso non può essere utilizzato per trasportare informazioni da / a un endpoint remoto. Invece si basa su un protocollo sottostante che nel caso di HTTP è TCP.
Puoi leggere di più sui livelli OSI se sei interessato.
I socket invece sono un'API fornita dalla maggior parte dei sistemi operativi per poter dialogare con la rete. L'API socket supporta diversi protocolli dal livello di trasporto e giù.
Ciò significa che se vuoi usare TCP usi i socket. Ma puoi anche usare i socket per comunicare usando HTTP, ma poi devi decodificare / codificare i messaggi secondo la specifica HTTP ( RFC2616 ). Poiché questo può essere un compito enorme per la maggior parte degli sviluppatori, abbiamo anche predisposto client nei nostri framework per sviluppatori (come .NET), ad esempio WebClient
le HttpWebRequest
classi o .
Con HTTP si utilizza un protocollo HTTP di alto livello (che funziona su un socket). È senza sessione, il che significa che invii richieste di testo come GET google.com
e ricevi in cambio testo o dati binari, dopo che la connessione è stata chiusa (in HTTP 1.1 sono disponibili connessioni persistenti)
Esempio 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 ();
}
Con i socket si va al livello inferiore e si controlla effettivamente la connessione e si inviano / ricevono byte grezzi.
Esempio:
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});
Connection
è impostata l' intestazione;)
Connessione HTTP
- La connessione HTTP è un protocollo che viene eseguito su un socket.
- La connessione HTTP è un'astrazione di livello superiore di una connessione di rete.
- Con la connessione HTTP l'implementazione si prende cura di tutti questi dettagli di livello superiore e invia semplicemente la richiesta HTTP (alcune informazioni di intestazione) e riceve la risposta HTTP dal server.
Connessione presa
- Il socket viene utilizzato per trasportare i dati tra i sistemi. Collega semplicemente due sistemi insieme, un indirizzo IP è l'indirizzo della macchina su una rete basata su IP.
- Con la connessione socket è possibile progettare il proprio protocollo per la connessione di rete tra due sistemi.
- Con la connessione Socket devi occuparti di tutti i dettagli di livello inferiore di una connessione TCP / IP.
La programmazione HTTP o la richiesta HTTP viene utilizzata per l'accoppiamento lasco e la comunicazione della tecnologia del linguaggio indipendente dalla piattaforma in cui viene utilizzata la programmazione del socket dove il sistema ha un protocollo di specifica del linguaggio
affinché due endpoint siano in grado di dialogare tra loro, dovrebbero entrambi seguire una serie di regole. nel computer questo insieme di regole è chiamato protocollo.
per esempio per un endpoint come un browser e per un altro come un server web, dovrebbero entrambi seguire una serie di regole o protocolli chiamati http per poter comunicare e scambiare informazioni. quindi nel world wide web e in questo tipo di comunicazioni solo coloro che parlano in base a questo protocollo http potrebbero parlare con successo tra loro.
socket è solo un endpoint. potrebbe seguire il protocollo http per entrare in una comunicazione in www come un client che richiede una pagina o potrebbe agire come un server in ascolto delle connessioni. o forse potrebbe seguire un altro insieme di regole o protocolli come ssh, ftp e comunicare in altri modi.
ora nella programmazione dei socket puoi creare un socket, associarlo a un indirizzo IP e un numero di porta che funga da numero di porta e dirgli di seguire http, ssh, ftp o qualunque cosa tu voglia in base alle comunicazioni che vuoi usare il tuo presa per.