Яка різниця між програмуванням сокет і програмою Http? хтось може допомогти, будь ласка?
Яка різниця між програмуванням сокет і програмою Http? хтось може допомогти, будь ласка?
Відповіді:
HTTP - це протокол програми. Це в основному означає, що сам HTTP не може використовуватися для транспортування інформації до / з віддаленої кінцевої точки. Натомість він спирається на базовий протокол, який у випадку HTTP - це TCP.
Ви можете прочитати більше про шари OSI, якщо вас цікавить.
З іншого боку, розетки - це API, який надає більшість операційних систем, щоб мати можливість спілкуватися з мережею. API сокета підтримує різні протоколи від транспортного шару і вниз.
Це означає, що якщо ви хочете використовувати TCP, ви використовуєте сокети. Але ви також можете використовувати сокети для спілкування за допомогою HTTP, але тоді вам доведеться декодувати / кодувати повідомлення відповідно до специфікації HTTP ( RFC2616 ). Оскільки це може бути величезним завданням для більшості розробників, ми також отримали готових клієнтів у наших розробничих структурах (наприклад, .NET), наприклад, WebClient
або HttpWebRequest
класи.
З 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});
Connection
заголовок;)
З'єднання HTTP
- HTTP-з'єднання - це протокол, який працює на розетці.
- HTTP-з'єднання - це абстракція мережевого з'єднання вищого рівня.
- За допомогою HTTP-з'єднання реалізація бере на себе всі ці деталі вищого рівня та просто надсилає HTTP-запит (деяку інформацію заголовка) та отримує HTTP-відповідь від сервера.
Підключення до розетки
- Socket використовується для транспортування даних між системами. Він просто з'єднує дві системи разом, IP-адреса - це адреса машини через мережу на базі IP.
- Завдяки підключенню до гнізда ви можете створити власний протокол для мережевого з'єднання між двома системами.
- Завдяки підключенню Socket вам потрібно подбати про всі деталі нижнього рівня TCP / IP-з'єднання.
HTTP-програмування або HTTP-запит використовується для слабкого з'єднання та мовної комунікації з нейтральною платформою, коли програмування сокета використовується там, де система має протокол специфікації мови
щоб дві кінцеві точки мали змогу спілкуватися один з одним, вони повинні дотримуватися набору правил. в комп'ютері цей набір правил називається протоколом.
наприклад, для кінцевої точки, як браузер, і для іншої, як веб-сервер, вони повинні дотримуватися набору правил або протоколу під назвою http, щоб мати можливість спілкуватися та торгувати інформацією. тому у всесвітній павутині та подібному спілкуванні лише ті, хто спілкується на основі цього протоколу http, могли б успішно спілкуватися один з одним.
socket - це лише кінцева точка. це може слідувати протоколу http, щоб прийти в спілкування на веб-сайті як клієнт, який запитує сторінку, або він може діяти як сервер, який прослуховує з'єднання. а може, він може дотримуватися іншого набору правил або протоколів, таких як ssh, ftp та спілкуватися іншими способами.
Тепер у програмуванні socket ви можете зробити сокет, прив’язати його до ip-адреси та номера порту, щоб він виступав як номер порту та наказав йому слідувати http, ssh, ftp або все, що ви хочете, виходячи з комунікацій, які ви хочете використовувати розетка для.