Soket programlama ile Http programlama arasındaki fark nedir? Birisi yardım edebilir mi lütfen?
Soket programlama ile Http programlama arasındaki fark nedir? Birisi yardım edebilir mi lütfen?
Yanıtlar:
HTTP bir uygulama protokolüdür. Temel olarak, HTTP'nin kendisinin uzaktaki bir uç noktaya / buradan bilgi taşımak için kullanılamayacağı anlamına gelir. Bunun yerine, HTTP durumunda TCP olan temel bir protokole dayanır.
Eğer ilgileniyorsanız OSI katmanları hakkında daha fazla bilgi edinebilirsiniz .
Öte yandan soketler, çoğu işletim sisteminin ağ ile konuşabilmek için sağladığı bir API'dir. Soket API, taşıma katmanından aşağıya farklı protokolleri destekler.
Bu, TCP kullanmak istiyorsanız soketleri kullandığınız anlamına gelir. Ancak HTTP kullanarak iletişim kurmak için soketleri de kullanabilirsiniz, ancak daha sonra mesajların kodunu HTTP spesifikasyonuna ( RFC2616 ) göre çözmeniz / kodlamanız gerekir . Bu, çoğu geliştirici için büyük bir görev olabileceğinden, geliştirici çerçevelerimizde (.NET gibi), örneğin WebClient
veya HttpWebRequest
sınıflarında da hazır istemcilerimiz var .
HTTP ile yüksek seviyeli HTTP protokolü kullanırsınız (bir soketin üzerinde çalışan). Oturumsuzdur GET google.com
, bu, bağlantı kapatıldıktan sonra karşılığında metin veya ikili veri gibi metin isteği gönderdiğiniz ve aldığınız anlamına gelir (HTTP 1.1'de kalıcı bağlantılar mevcuttur)
MSDN örneği:
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 ();
}
Soketlerle daha düşük seviyeye gidersiniz ve aslında bağlantıyı kontrol eder ve ham baytlar gönderir / alırsınız.
Misal:
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
başlığın nasıl ayarlandığına bağlıdır ;)
HTTP Bağlantısı
- HTTP bağlantısı, bir soket üzerinde çalışan bir protokoldür.
- HTTP bağlantısı, bir ağ bağlantısının daha üst düzey bir soyutlamasıdır.
- HTTP bağlantısıyla, uygulama tüm bu üst düzey ayrıntılarla ilgilenir ve yalnızca HTTP isteği (bazı başlık bilgileri) gönderir ve sunucudan HTTP yanıtı alır.
Soket Bağlantısı
- Soket, sistemler arasında veri taşımak için kullanılır. Basitçe iki sistemi birbirine bağlar, bir IP adresi, IP tabanlı bir ağ üzerinden makinenin adresidir.
- Soket bağlantısı ile iki sistem arasında ağ bağlantısı için kendi protokolünüzü tasarlayabilirsiniz.
- Soket bağlantısıyla, bir TCP / IP bağlantısının tüm alt düzey ayrıntılarıyla ilgilenmeniz gerekir.
HTTP programlama veya HTTP isteği, gevşek bağlantı ve platformdan bağımsız dil teknolojisi iletişimi için kullanılır; burada soket programlama, sistemin dil belirtim protokolüne sahip olduğu yerlerde kullanılır.
iki uç noktanın birbiriyle konuşabilmesi için her ikisinin de bir dizi kurala uyması gerekir. bilgisayarda bu kurallara protokol adı verilir.
örneğin, tarayıcı gibi bir uç nokta ve bir başka web sunucusu gibi bir uç nokta için, iletişim kurabilmek ve bilgi alıp satabilmek için her ikisi de http adı verilen bir dizi kuralı veya protokolü izlemelidir. bu yüzden dünya çapındaki ağda ve bu tür iletişimlerde yalnızca bu http protokolüne dayalı olarak konuşan kişiler birbirleriyle başarılı bir şekilde konuşabilir.
soket sadece bir uç noktadır. bir sayfa isteyen bir istemci olarak www'da bir iletişime girmek için http protokolünü takip edebilir veya bağlantıları dinleyen bir sunucu olarak hareket edebilir. veya belki ssh, ftp gibi başka bir dizi kuralı veya protokolü izleyebilir ve başka yollarla iletişim kurabilir.
şimdi soket programlamada bir soket yapabilir, onu bir ip adresine ve bir port numarasına bağlayarak port numarası olarak hareket edebilir ve kullanmak istediğiniz iletişimlere göre http, ssh, ftp veya istediğiniz her şeyi takip etmesini söyleyebilirsiniz. soket için.