Helpex - Trao đổi & giúp đỡ Đăng nhập
90

Sự khác biệt giữa lập trình socket và lập trình http là gì? ai có thể giúp tôi không?

90 hữu ích 0 bình luận 54k xem chia sẻ
90

HTTP là một giao thức ứng dụng. Về cơ bản, điều đó có nghĩa là bản thân HTTP không thể được sử dụng để vận chuyển thông tin đến / từ điểm cuối từ xa. Thay vào đó, nó dựa vào một giao thức cơ bản, trong trường hợp của HTTP là TCP.

Sự khác biệt giữa lập trình socket và lập trình http?

Bạn có thể đọc thêm về các lớp OSI nếu bạn quan tâm.

Mặt khác, các socket là một API mà hầu hết các hệ điều hành cung cấp để có thể nói chuyện với mạng. API socket hỗ trợ các giao thức khác nhau từ lớp vận chuyển trở xuống.

Điều đó có nghĩa là nếu bạn muốn sử dụng TCP, bạn sử dụng các socket. Nhưng bạn cũng có thể sử dụng các socket để giao tiếp bằng HTTP, nhưng sau đó bạn phải giải mã / mã hóa tin nhắn theo đặc tả HTTP ( RFC2616 ). Vì đó có thể là một nhiệm vụ lớn đối với hầu hết các nhà phát triển, chúng tôi cũng đã có các máy khách sẵn sàng trong các khung phát triển của chúng tôi (như .NET), ví dụ như WebClientcác HttpWebRequestlớp.

90 hữu ích 2 bình luận chia sẻ
20

Với HTTP, bạn sử dụng giao thức HTTP cấp cao (hoạt động trên đầu ổ cắm). Đó là phiên không có nghĩa là bạn gửi yêu cầu văn bản như GET google.comvà nhận lại văn bản hoặc dữ liệu nhị phân, sau khi kết nối đó bị đóng (trong các kết nối liên tục HTTP 1.1 khả dụng)

Ví dụ 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 ();
} 

Với các socket bạn đi ở mức thấp hơn và thực sự kiểm soát kết nối và gửi / nhận byte thô.

Thí dụ:

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});
20 hữu ích 4 bình luận chia sẻ
6

Kết nối HTTP

  • Kết nối HTTP là một giao thức chạy trên một ổ cắm.
  • Kết nối HTTP là sự trừu tượng hóa ở mức cao hơn của kết nối mạng.
  • Với kết nối HTTP, việc triển khai sẽ xử lý tất cả các chi tiết cấp cao hơn này và chỉ cần gửi yêu cầu HTTP (một số thông tin tiêu đề) và nhận phản hồi HTTP từ máy chủ.

Kết nối ổ cắm

  • Ổ cắm được sử dụng để vận chuyển dữ liệu giữa các hệ thống. Nó chỉ đơn giản là kết nối hai hệ thống với nhau, một địa chỉ IP là địa chỉ của máy qua mạng dựa trên IP.
  • Với kết nối ổ cắm, bạn có thể thiết kế giao thức của riêng mình để kết nối mạng giữa hai hệ thống.
  • Với kết nối Ổ cắm, bạn cần chăm sóc tất cả các chi tiết cấp thấp hơn của kết nối TCP / IP.
6 hữu ích 0 bình luận chia sẻ
0

Lập trình HTTP hoặc yêu cầu HTTP được sử dụng để kết nối lỏng lẻo và giao tiếp công nghệ ngôn ngữ trung lập nền tảng trong đó sử dụng lập trình ổ cắm trong đó hệ thống có giao thức đặc tả ngôn ngữ

0 hữu ích 1 bình luận chia sẻ
loading
Không tìm thấy câu trả lời bạn tìm kiếm? Duyệt qua các câu hỏi được gắn thẻ sockets network-programming , hoặc hỏi câu hỏi của bạn.

Có thể bạn quan tâm

loading