Máy chủ web C++ đơn giản

May Chu Web C Don Gian



Trong bài viết này, chúng ta sẽ tìm hiểu về máy chủ web trong C++. Mục đích chính của máy chủ web là xử lý các yêu cầu HTTP đến, xử lý tất cả các yêu cầu sắp tới và phản hồi lại bằng nội dung HTML của web. Chúng ta cần duy trì máy chủ web bằng C++ bằng cách thêm các thư viện mạng vào môi trường C++, như “sockets”, để xử lý các vấn đề và liên lạc mạng. Máy chủ web là xương sống của internet và là cách liên lạc giữa người dùng và máy chủ chính. Hãy đánh giá quá trình tạo một máy chủ web đơn giản thông qua việc triển khai ví dụ thích hợp.

Thiết lập môi trường

Trước tiên chúng ta cần thiết lập tất cả các tùy chọn cần thiết trong môi trường của mình. Chúng ta cần sử dụng các ổ cắm để lắng nghe các yêu cầu HTTP đến. Sau đó, chúng tôi liên kết ổ cắm với cổng cụ thể trên máy chủ làm hệ thống của chúng tôi. Sau đó, khi máy khách gọi yêu cầu, máy chủ sẽ lắng nghe các yêu cầu được kết nối đến này. Máy chủ phản hồi yêu cầu của người dùng thông qua các yêu cầu HTTP để tìm nạp yêu cầu của người dùng đến máy chủ. Sau đó, máy chủ xử lý yêu cầu và trả về phản hồi HTTP cho người dùng bằng cách xử lý phù hợp.







Xử lý socket của máy chủ web

Trong phần này, chúng ta sẽ tìm hiểu rằng các socket tạo ra giao tiếp giữa các tiến trình khác nhau chạy trong hệ thống của chúng ta. Các ổ cắm về cơ bản được sử dụng để tạo liên lạc hoặc kết nối giữa trình duyệt của khách hàng và máy chủ của chúng tôi. Kết nối của ổ cắm được xây dựng trong C++ theo cách được đề cập sau đây:



Ở đây, chúng ta sẽ định nghĩa các thư viện cho socket là “#include ”. Trong hàm main, chúng ta tạo socket bằng cách khởi tạo “server_fd”. Sau đó, chúng tôi kiểm tra giá trị của “server_fd” chứa xác thực kết nối chứng khoán. Nếu máy chủ ngừng hoạt động và không hoạt động tốt, nó sẽ trả về hoặc hiển thị thông báo “Tạo ổ cắm không thành công”. Nếu không, thông báo có địa chỉ IP của máy chủ web sẽ hiển thị dữ liệu HTML trên máy chủ web.



#include
#include
#include
int chính ( ) {
int server_fd = ổ cắm ( AF_INET, SOCK_STREAM, 0 ) ;
nếu như ( máy chủ_fd == - 1 ) {
std::cerr << 'Tạo ổ cắm không thành công' ;
trở lại -1 ;
}
// khác
// {
// std::cout << 'lối ra' ;
// }
// trói buộc
std::cout << 'http//:127.0.0.1:8080' ;
// Mã tiếp theo ở đây
trở lại 0 ;
}


Đầu ra của mã này được đính kèm như sau:






Điều này cho thấy ổ cắm được tạo thành công trong C++ để kết nối với máy chủ web.

Xử lý máy chủ web trong C++

Máy chủ web của hệ thống được thiết lập để xử lý các khái niệm C++ khác nhau như sắp xếp hợp nhất, sắp xếp tuyến tính, v.v. Hãy nhớ khởi tạo các thư viện mạng quan trọng. Máy chủ web chạy trên máy cục bộ (127.0.0.1) và lắng nghe trên cổng 8080.



Bao gồm các thư viện cần thiết trong ngôn ngữ lập trình C++ như sau:

# bao gồm < tăng / asio.hpp >


Hãy nhớ rằng việc tạo một máy chủ web bằng C++ không phải là một quá trình dễ dàng và tốn thời gian. Chúng tôi có thể xử lý các kết nối đến bằng cách sử dụng “async_accept”.

Phản hồi của máy chủ trong mã C++ trên máy chủ web

Phản hồi của máy chủ phải là HTTP hoạt động trên trình duyệt và hiển thị đầu ra trên chế độ xem HTML trên trang web. Tất cả các thư viện đều quản lý máy chủ và xử lý tất cả các yêu cầu hợp lệ.

Liên kết và lắng nghe máy chủ web

Tiếp theo, chúng ta cần biết về sự ràng buộc và lắng nghe của máy chủ web để thực thi mã trên trang web một cách dễ dàng. Sau đó, chúng ta cần liên kết ổ cắm với địa chỉ nhất định của hệ thống, về cơ bản là địa chỉ IP và cổng mà các ổ cắm này đang hoạt động. Trên cổng, chúng tôi bắt đầu lắng nghe các kết nối đến.

Chúng ta cần khởi tạo một số thư viện để liên kết và liên kết.

Địa chỉ Sockaddr_in;


Chúng tôi có thể liên kết máy chủ. Nếu máy chủ ngừng hoạt động hoặc không được kết nối, thông báo sẽ không được hiển thị trên trang web của bất kỳ trình duyệt nào.

Chấp nhận kết nối đến máy chủ web

Trong phần này, chúng ta sẽ tìm hiểu cách chúng ta có thể kiểm soát luồng yêu cầu của khách hàng. Máy chủ chấp nhận tất cả các yêu cầu của khách hàng thông qua giao thức HTTP. Ổ cắm máy chủ cho biết kích thước của tin nhắn được nhận trên máy chủ web từ máy khách. Thông báo chứa kết nối ổ cắm máy chủ và địa chỉ rõ ràng và duy nhất hơn. Chúng tôi kiểm tra xem máy chủ có cần phản hồi nếu tìm thấy ổ cắm người dùng hay không. Nếu không tìm thấy kết nối ổ cắm người dùng, chúng tôi không thể chấp nhận kết nối với máy chủ web.

Phương thức gửi và nhận dữ liệu từ người dùng và máy chủ

Sau khi tạo các liên kết socket và chấp nhận kết nối, việc tiếp theo là gửi dữ liệu đến phía máy chủ và nhận dữ liệu từ máy chủ bằng các từ khóa khác nhau và xây dựng các hàm liên quan đến gửi và nhận dữ liệu trong C++. Ở đây, chúng tôi kiểm tra phản hồi của dữ liệu. Đây có phải là yêu cầu lấy dữ liệu hay POST dữ liệu từ máy chủ web không? Chúng tôi kiểm tra trạng thái phản hồi của yêu cầu của khách hàng. Chúng tôi tạm thời lưu trữ tất cả các yêu cầu của khách hàng trên bộ đệm để hiển thị thông báo hoặc đầu ra trên máy chủ web.

Sắp xếp tuyến tính trong C++

Hãy thực hiện sắp xếp tuyến tính tại đây và hiển thị kết quả sắp xếp tuyến tính trên máy chủ web một cách dễ dàng. Đoạn mã của việc sắp xếp tuyến tính được đính kèm như sau:

#include
sử dụng không gian tên std;
void Tìm kiếm tuyến tính ( int mảng [ ] , int len, int mục ) {
( int Tôi = 0 ;Tôi < len;i++ ) {
nếu như ( arr [ Tôi ] == mục ) {
cout << mục << ' Tìm thấy ở mục lục : ' << Tôi;
trở lại ;
}
}
cout << 'Không tìm thấy' ;
}
int chính ( ) {
int mảng [ ] = { 10 , 5 , mười lăm , hai mươi mốt , - 3 , 7 } ;
int len ​​= sizeof ( arr ) / kích thước của ( arr [ 0 ] ) ;
mục int = hai mươi mốt ;
Tìm kiếm tuyến tính ( arr, len, mục ) ;
trở lại 0 ;
}


Trong ví dụ này, chúng tôi tìm kiếm mục “21” tại chỉ mục nào. Vì vậy, chúng tôi chạy mã này. Đầu ra của mã này được đính kèm như sau:


Đầu ra này hiện được mở trên máy chủ web giống như trong bất kỳ trình duyệt nào như Chrome, Edge, v.v.

Chấm dứt tất cả các kết nối sau màn hình đầu ra

Đây là bước cuối cùng trong việc xử lý dữ liệu trên máy chủ web. Hãy nhớ đóng các kết nối ổ cắm sau khi thực hiện đầu ra được yêu cầu. Chúng tôi đóng ổ cắm ở đây bằng cách sử dụng các chức năng như “đóng (server_id)” và “đóng (ổ cắm máy khách)”.

Khi kết thúc quá trình chạy máy chủ, kết quả mong đợi được hiển thị trên trang web bằng cách truy cập địa chỉ là “http//localhost:8080”.

Phần kết luận

Ở cuối bài viết này, chúng ta có thể nói rằng việc xử lý máy chủ web đơn giản trong C++ thực sự phức tạp và cần tập trung hoàn toàn để gửi và nhận yêu cầu của máy khách HTTP. Chúng ta có thể mở rộng chức năng của máy chủ web để hiển thị nội dung động trên trang web. Hy vọng bài viết này hữu ích cho bạn và bạn có thể chạy các ví dụ này trên môi trường của mình để hiểu các bước cần thiết để tạo một máy chủ web đơn giản trong C++.