எளிய C++ வலை சேவையகம்

Eliya C Valai Cevaiyakam



இந்த கட்டுரையில், C++ இல் உள்ள இணைய சேவையகங்களைப் பற்றி அறிந்து கொள்வோம். இணைய சேவையகத்தின் முக்கிய நோக்கம், வரும் HTTP கோரிக்கைகளைக் கையாள்வது, வரவிருக்கும் அனைத்து கோரிக்கைகளையும் செயலாக்குவது மற்றும் பதிலுக்கு வலை HTML உள்ளடக்கத்துடன் பதிலளிப்பதாகும். நெட்வொர்க்கிங் தகவல்தொடர்புகள் மற்றும் சிக்கல்களைக் கையாள, 'சாக்கெட்டுகள்' போன்ற C++ சூழலில் நெட்வொர்க்கிங் லைப்ரரிகளைச் சேர்ப்பதன் மூலம் நாம் C++ இல் இணைய சேவையகத்தை பராமரிக்க வேண்டும். இணைய சேவையகம் என்பது இணையத்தின் முதுகெலும்பாகும், மேலும் இது பயனர்களுக்கும் முக்கிய சேவையகங்களுக்கும் இடையிலான தொடர்புக்கான ஒரு வழியாகும். சரியான எடுத்துக்காட்டு செயலாக்கங்கள் மூலம் எளிய இணைய சேவையகத்தை உருவாக்கும் செயல்முறையை மதிப்பீடு செய்வோம்.

சூழலை அமைத்தல்

முதலில் நமது சூழலில் தேவையான அனைத்து விருப்பங்களையும் அமைக்க வேண்டும். உள்வரும் HTTP கோரிக்கைகளைக் கேட்க சாக்கெட்டுகளைப் பயன்படுத்த வேண்டும். அதன் பிறகு, ஹோஸ்ட் கணினியில் உள்ள குறிப்பிட்ட போர்ட்டில் சாக்கெட்டை எங்கள் அமைப்பாக பிணைக்கிறோம். அதன் பிறகு, வாடிக்கையாளர்கள் கோரிக்கைக்கு அழைக்கும் போது, ​​இந்த உள்வரும் இணைக்கப்பட்ட கோரிக்கைகளை சர்வர் கேட்கும். சேவையகத்திற்கு பயனரின் கோரிக்கையைப் பெற HTTP கோரிக்கைகள் மூலம் பயனரின் கோரிக்கைகளுக்கு சேவையகம் பதிலளிக்கிறது. அதன் பிறகு, சேவையகம் கோரிக்கையை கையாளுகிறது மற்றும் சரியான கைவினை மூலம் பயனருக்கு HTTP பதில்களை வழங்குகிறது.







வலை சேவையகத்தின் சாக்கெட் கையாளுதல்

இந்த அமர்வில், எங்கள் கணினியில் இயங்கும் வெவ்வேறு செயல்முறைகளுக்கு இடையே தொடர்புகளை சாக்கெட்டுகள் உருவாக்குகின்றன என்பதை அறிந்து கொள்வோம். வாடிக்கையாளரின் உலாவிக்கும் எங்கள் சேவையகத்திற்கும் இடையே தொடர்பு அல்லது இணைப்பை உருவாக்க சாக்கெட்டுகள் அடிப்படையில் பயன்படுத்தப்படுகின்றன. பின்வருவனவற்றில் குறிப்பிடப்பட்டுள்ளபடி சாக்கெட்டின் இணைப்பு C++ இல் கட்டப்பட்டுள்ளது:



இங்கே, சாக்கெட்டுகளுக்கான நூலகங்களை “#include ” என்று வரையறுப்போம். முக்கிய செயல்பாட்டில், 'server_fd' ஐ துவக்குவதன் மூலம் சாக்கெட்டை உருவாக்குகிறோம். அதன் பிறகு, பங்கு இணைப்பு சரிபார்ப்பைக் கொண்ட “server_fd” இன் மதிப்பைச் சரிபார்க்கிறோம். சேவையகம் செயலிழந்து நன்றாக வேலை செய்யவில்லை என்றால், அது 'சாக்கெட் உருவாக்கம் தோல்வியடைந்தது' என்ற செய்தியைத் திருப்பிக் கொடுக்கும் அல்லது காண்பிக்கும். இல்லையெனில், இணைய சேவையகத்தின் ஐபி முகவரியைக் கொண்ட செய்தி, வலை சேவையகத்தில் HTML இன் தரவைக் காண்பிக்கும்.



# அடங்கும்
# அடங்கும்
# அடங்கும்
முழு எண்ணாக ( ) {
int server_fd = சாக்கெட் ( AF_INET, SOCK_STREAM, 0 ) ;
என்றால் ( server_fd == - 1 ) {
std::cerr << 'சாக்கெட் உருவாக்கம் தோல்வியடைந்தது' ;
திரும்ப -1 ;
}
// வேறு
// {
// std::cout << 'வெளியேறு' ;
// }
// கட்டுதல்
std::cout << 'http//:127.0.0.1:8080' ;
// மேலும் குறியீடு இங்கே செல்கிறது
திரும்ப 0 ;
}


இந்த குறியீட்டின் வெளியீடு பின்வருவனவற்றில் இணைக்கப்பட்டுள்ளது:






இணைய சேவையகத்துடன் இணைக்க, சி++ இல் சாக்கெட் வெற்றிகரமாக உருவாக்கப்பட்டதை இது காட்டுகிறது.

C++ இல் வெப் சர்வர் கையாளுதல்

ஒன்றிணைத்தல், நேரியல் வரிசைப்படுத்துதல் போன்ற பல்வேறு C++ கருத்துகளைக் கையாள கணினியின் இணைய சேவையகம் அமைக்கப்பட்டுள்ளது. முக்கியமான நெட்வொர்க்கிங் நூலகங்களைத் துவக்க நினைவில் கொள்ளுங்கள். வலை சேவையகம் உள்ளூர் கணினியில் (127.0.0.1) இயங்குகிறது மற்றும் போர்ட் 8080 இல் கேட்கிறது.



தேவையான நூலகங்களை C++ நிரலாக்க மொழியில் பின்வருமாறு சேர்க்கவும்:

# சேர்க்கிறது < ஊக்கம் / asio.hpp >


C++ இல் ஒரு இணைய சேவையகத்தை உருவாக்குவது எளிதான மற்றும் நேரத்தை எடுத்துக்கொள்ளும் செயல்முறை அல்ல என்பதை நினைவில் கொள்ளுங்கள். “async_accept” ஐப் பயன்படுத்தி உள்வரும் இணைப்புகளை நாம் கையாளலாம்.

இணைய சேவையகத்தில் C++ குறியீட்டில் உள்ள சேவையக பதில்கள்

சர்வர் பதில் HTTP ஆக இருக்க வேண்டும், இது உலாவியில் வேலை செய்கிறது மற்றும் வலைப்பக்கத்தில் உள்ள HTML காட்சியில் வெளியீட்டைக் காட்டுகிறது. அனைத்து நூலகங்களும் சேவையகங்களை நிர்வகிக்கின்றன மற்றும் அனைத்து செல்லுபடியாகும் கோரிக்கைகளையும் கையாளுகின்றன.

இணைய சேவையகத்தை பிணைத்தல் மற்றும் கேட்பது

அடுத்து, இணையப் பக்கத்தில் உள்ள குறியீட்டை எளிதாக இயக்க, இணைய சேவையகத்தின் பிணைப்பு மற்றும் கேட்பது பற்றி நாம் தெரிந்து கொள்ள வேண்டும். அதன் பிறகு, நமது கணினியின் கொடுக்கப்பட்ட முகவரியுடன், அடிப்படையில் இந்த சாக்கெட்டுகள் செயலில் உள்ள ஐபி முகவரி மற்றும் போர்ட் ஆகியவற்றுடன் சாக்கெட்டை பிணைக்க வேண்டும். துறைமுகத்தில், உள்வரும் இணைப்புகளைக் கேட்கத் தொடங்குகிறோம்.

பிணைக்க மற்றும் இணைக்க சில நூலகங்களை நாம் துவக்க வேண்டும்.

Sockaddr_in முகவரி;


நாம் சர்வரை பிணைக்க முடியும். சேவையகம் செயலிழந்தால் அல்லது இணைக்கப்படாமல் இருந்தால், எந்த உலாவியின் வலைப்பக்கத்திலும் செய்தி காட்டப்படாது.

இணைய சேவையகத்திற்கான இணைப்புகளை ஏற்றுக்கொள்வது

இந்த பிரிவில், வாடிக்கையாளரின் கோரிக்கைகளின் ஓட்டத்தை எவ்வாறு கட்டுப்படுத்தலாம் என்பதைக் கற்றுக்கொள்வோம். HTTP நெறிமுறை மூலம் அனைத்து கிளையன்ட் கோரிக்கைகளையும் சர்வர் ஏற்றுக்கொள்கிறது. சேவையக சாக்கெட் கிளையண்டிலிருந்து வலை சேவையகத்தில் பெறப்பட்ட செய்தியின் அளவைக் குறிக்கிறது. செய்தியில் சர்வர் சாக்கெட் இணைப்பு மற்றும் முகவரி இன்னும் தெளிவாகவும் தனித்துவமாகவும் உள்ளது. பயனர் சாக்கெட் கண்டுபிடிக்கப்பட்டாலும் இல்லாவிட்டாலும் சேவையகம் பதிலளிக்க வேண்டுமா என்பதை நாங்கள் சரிபார்க்கிறோம். பயனர் சாக்கெட் இணைப்பு கிடைக்கவில்லை என்றால், இணைய சேவையகத்திற்கான இணைப்பை எங்களால் ஏற்க முடியாது.

பயனர் மற்றும் சர்வர் எண்டில் இருந்து தரவை அனுப்புதல் மற்றும் பெறுதல் முறைகள்

சாக்கெட் இணைப்புகளை உருவாக்கி இணைப்பை ஏற்றுக்கொண்ட பிறகு, அடுத்த விஷயம், தரவை சர்வர் பக்கத்திற்கு அனுப்புவது மற்றும் வெவ்வேறு முக்கிய வார்த்தைகளைப் பயன்படுத்தி சேவையகத்திலிருந்து தரவைப் பெறுவது மற்றும் சி++ இல் தரவை அனுப்புவது மற்றும் பெறுவது தொடர்பான செயல்பாடுகளை உருவாக்குவது. இங்கே, தரவின் பதிலைச் சரிபார்க்கிறோம். இது தரவைப் பெறுவதற்கான கோரிக்கையா அல்லது இணைய சேவையகத்திலிருந்து தரவை இடுகையிட வேண்டுமா? வாடிக்கையாளரின் கோரிக்கையின் மறுமொழி நிலையை நாங்கள் சரிபார்க்கிறோம். இணைய சேவையகத்தில் செய்தி அல்லது வெளியீட்டைக் காண்பிக்க அனைத்து கிளையன்ட் கோரிக்கைகளையும் தற்காலிகமாக இடையகத்தின் மீது சேமித்து வைக்கிறோம்.

C++ இல் நேரியல் வரிசையாக்கம்

இங்கே நேரியல் வரிசைப்படுத்தலைச் செய்து, இணைய சேவையகத்தில் நேரியல் வரிசைப்படுத்தலின் முடிவை எளிதாகக் காண்பிப்போம். நேரியல் வரிசையாக்கத்தின் குறியீடு துணுக்கு பின்வருவனவற்றில் இணைக்கப்பட்டுள்ளது:

# அடங்கும்
பெயர்வெளி std ஐப் பயன்படுத்துதல்;
லீனியர் தேடல் வெற்றிடமானது ( int arr [ ] , int len, int உருப்படி ) {
க்கான ( முழு எண்ணாக நான் = 0 ;நான் < len;i++ ) {
என்றால் ( arr [ நான் ] == பொருள் ) {
கூட் << பொருள் << 'குறியீட்டில் காணப்படுகிறது:' << நான்;
திரும்ப ;
}
}
கூட் << 'கிடைக்கவில்லை' ;
}
முழு எண்ணாக ( ) {
int arr [ ] = { 10 , 5 , பதினைந்து , இருபத்து ஒன்று , - 3 , 7 } ;
int len ​​= அளவு ( arr ) / அளவு ( arr [ 0 ] ) ;
int உருப்படி = இருபத்து ஒன்று ;
நேரியல் தேடல் ( arr, len, உருப்படி ) ;
திரும்ப 0 ;
}


இந்த எடுத்துக்காட்டில், '21' உருப்படியை எந்த குறியீட்டில் தேடுகிறோம். எனவே, இந்த குறியீட்டை இயக்குகிறோம். இந்த குறியீட்டின் வெளியீடு பின்வருவனவற்றில் இணைக்கப்பட்டுள்ளது:


குரோம், எட்ஜ் போன்ற எந்த உலாவியிலும் இந்த வெளியீடு இப்போது இணைய சேவையகத்திலும் திறக்கப்பட்டுள்ளது.

வெளியீட்டு காட்சிக்குப் பிறகு அனைத்து இணைப்புகளையும் நிறுத்தவும்

இணைய சேவையகத்தில் தரவைக் கையாள்வதில் இதுவே கடைசிப் படியாகும். தேவையான வெளியீட்டைச் செய்த பிறகு சாக்கெட் இணைப்புகளை மூட நினைவில் கொள்ளுங்கள். “close(server_id)” மற்றும் “close (client socket)” போன்ற செயல்பாடுகளைப் பயன்படுத்தி இங்கே சாக்கெட்டை மூடுகிறோம்.

சேவையகத்தை இயக்கும் முடிவில், “http//localhost:8080” என்ற முகவரியை அணுகுவதன் மூலம் எதிர்பார்க்கப்படும் வெளியீடு இணையப் பக்கத்தில் காட்டப்படும்.

முடிவுரை

இந்தக் கட்டுரையின் முடிவில், C++ இல் எளிமையான இணைய சேவையகக் கையாளுதல் மிகவும் சிக்கலானது மற்றும் HTTP கிளையண்டின் கோரிக்கையை அனுப்பவும் பெறவும் முழு கவனம் தேவை என்று கூறலாம். வலைப்பக்கத்தில் உள்ளடக்கத்தை மாறும் வகையில் காட்ட, இணைய சேவையக செயல்பாட்டை விரிவாக்கலாம். இந்த கட்டுரை உங்களுக்கு பயனுள்ளதாக இருக்கும் என்று நம்புகிறோம், மேலும் C++ இல் ஒரு எளிய இணைய சேவையகத்தை உருவாக்க தேவையான படிகளைப் புரிந்துகொள்ள உங்கள் சூழலில் இந்த உதாரணங்களை இயக்கலாம்.