Qual é a diferença entre a programação de soquete e a programação Http? Alguém pode ajudar por favor?
Qual é a diferença entre a programação de soquete e a programação Http? Alguém pode ajudar por favor?
Respostas:
HTTP é um protocolo de aplicativo. Basicamente, significa que o próprio HTTP não pode ser usado para transportar informações de / para um ponto de extremidade remoto. Em vez disso, ele depende de um protocolo subjacente que, no caso do HTTP, é o TCP.
Você pode ler mais sobre camadas OSI se estiver interessado.
Os soquetes, por outro lado, são uma API fornecida pela maioria dos sistemas operacionais para comunicar-se com a rede. A API de soquete suporta diferentes protocolos da camada de transporte e abaixo.
Isso significa que se você quiser usar TCP, use sockets. Mas você também pode usar soquetes para se comunicar usando HTTP, mas então você tem que decodificar / codificar mensagens de acordo com a especificação HTTP ( RFC2616 ). Visto que isso pode ser uma tarefa enorme para a maioria dos desenvolvedores, também temos clientes prontos em nossos frameworks de desenvolvedor (como .NET), por exemplo, o WebClient
ou as HttpWebRequest
classes.
Com o HTTP, você usa o protocolo HTTP de alto nível (que funciona em cima de um soquete). É sem sessão, o que significa que você envia uma solicitação de texto como GET google.com
e recebe texto ou dados binários em troca, depois que a conexão for fechada (em HTTP 1.1 conexões persistentes estão disponíveis)
Exemplo do 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 ();
}
Com os soquetes você vai para o nível mais baixo e controla a conexão e envia / recebe bytes brutos.
Exemplo:
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
cabeçalho está definido;)
Conexão HTTP
- A conexão HTTP é um protocolo executado em um soquete.
- A conexão HTTP é uma abstração de nível superior de uma conexão de rede.
- Com a conexão HTTP, a implementação cuida de todos esses detalhes de nível superior e simplesmente envia uma solicitação HTTP (algumas informações de cabeçalho) e recebe uma resposta HTTP do servidor.
Conexão de soquete
- Socket é usado para transportar dados entre sistemas. Ele simplesmente conecta dois sistemas, um endereço IP é o endereço da máquina em uma rede baseada em IP.
- Com a conexão de soquete, você pode projetar seu próprio protocolo para conexão de rede entre dois sistemas.
- Com a conexão Socket, você precisa cuidar de todos os detalhes de nível inferior de uma conexão TCP / IP.
A programação HTTP ou solicitação HTTP é usada para acoplamento frouxo e comunicação de tecnologia de linguagem neutra de plataforma, onde a programação de soquete é usada onde o sistema tem protocolo de especificação de linguagem
para que dois terminais possam se comunicar, eles devem seguir um conjunto de regras. no computador, esse conjunto de regras é denominado protocolo.
por exemplo, para um endpoint como um navegador e para outro como um servidor web, ambos devem seguir um conjunto de regras ou protocolo denominado http para poder se comunicar e trocar informações. então, na rede mundial de computadores e neste tipo de comunicação, apenas aqueles que falam com base neste protocolo http podem se comunicar com sucesso.
socket é apenas um endpoint. ele poderia seguir o protocolo http para entrar em uma comunicação em www como um cliente solicitando uma página ou poderia atuar como um servidor ouvindo conexões. ou talvez pudesse seguir outro conjunto de regras ou protocolos como ssh, ftp e se comunicar de outras maneiras.
agora na programação de soquete você pode fazer um soquete, vinculá-lo a um endereço ip e um número de porta para atuar como um número de porta e dizer a ele para seguir http, ssh, ftp ou o que você quiser com base nas comunicações que deseja usar soquete para.