Qual è la differenza tra programmazione socket e programmazione Http? Qualcuno può aiutare, per favore?differenza tra programmazione socket e programmazione Http
risposta
HTTP è un protocollo di applicazione. Significa fondamentalmente che HTTP stesso non può essere utilizzato per trasportare informazioni da/verso un endpoint remoto. Invece si basa su un protocollo sottostante che nel caso di HTTP è TCP.
Potete leggere di più su OSI layers, se siete interessati.
Gli zoccoli d'altra parte sono un'API che la maggior parte dei sistemi operativi fornisce per poter parlare con la rete. L'API socket supporta diversi protocolli dal livello di trasporto e down.
Ciò significa che se si desidera utilizzare TCP si utilizzano prese. Ma puoi anche usare i socket per comunicare usando HTTP, ma poi devi decodificare/codificare i messaggi secondo le specifiche HTTP (RFC2616). Poiché questo può essere un compito enorme per la maggior parte degli sviluppatori, abbiamo anche avuto dei clienti pronti nei nostri framework per sviluppatori (come .NET), ad esempio le classi WebClient
o HttpWebRequest
.
Con HTTP si utilizza il protocollo HTTP di alto livello (che funziona su un socket). E 'session-meno che significa che si inviano richiesta di testo come GET google.com
e ricevere testo o dati binari, in cambio, dopo che la connessione è chiusa (in HTTP 1.1 connessioni persistenti sono disponibili)
MSDN esempio:
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 socket si va sul livello più basso e in effetti controllano la connessione e inviano/ricevono byte non elaborati.
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});
programmazione HTTP o la richiesta HTTP è utilizzato per l'accoppiamento liberamente e piattaforma neutrale tecnologia linguistica comunicazione in cui la programmazione presa viene utilizzato in cui il sistema ha lingua protocollo specifica
Cosa intendi per lingua? Ad esempio, un'applicazione java può comunicare con un'applicazione Python tramite socket –
connessione HTTP
- La connessione HTTP è un protocollo eseguito su un socket.
- La connessione HTTP è un'astrazione di livello superiore di una connessione di rete.
- Con la connessione HTTP l'implementazione si occupa di tutti questi dettagli di livello superiore e invia semplicemente la richiesta HTTP (alcune informazioni di intestazione ) e riceve risposta HTTP dal server.
connessione socket
- Socket è utilizzato per il trasporto di dati tra sistemi. Connette 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 è necessario occuparsi di tutti i dettagli di livello inferiore di una connessione TCP/IP.
Quindi entrambi usano TCP, è solo che HTTP risponde in un formato predefinito e socket fornisce dati come restituiti da un'altra estremità di un socket, giusto? –
sì. TCP si assicura che tutto arrivi (livello di trasporto) e HTTP comunichi cosa dovrebbero fare le applicazioni web. – jgauffin