"வணக்கம், அமிகோ!"

"ஹலோ ரிஷி!"

"இன்றைய பாடத்தின் தலைப்பு சாக்கெட்டுகள்."

"நெட்வொர்க்கில் உள்ள ஒவ்வொரு கணினிக்கும் அதன் சொந்த தனிப்பட்ட ஐபி முகவரி உள்ளது என்பதை நீங்கள் ஏற்கனவே அறிவீர்கள்."

"ஆமாம்."

"இப்போது உங்களிடம் பல கணினிகள் இருப்பதாக கற்பனை செய்து பாருங்கள், ஒவ்வொன்றும் இணையத்தை அணுகும் ஒரு டஜன் நிரல்களை இயக்குகின்றன: ஸ்கைப், ICQ போன்றவை."

"இந்த திட்டங்கள் ஒருவருக்கொருவர் தொடர்பு கொள்ள விரும்புகின்றன."

"ஒருவருக்கொருவர் குறுக்கிடுவதை நாம் நிறுத்த வேண்டும். ஸ்கைப் ஸ்கைப் உடன் இணைக்க வேண்டும், ஸ்லாக் ஸ்லாக்குடன் இணைகிறது போன்றவற்றை உருவாக்க வேண்டும்."

"URLகள் மற்றும் இணைய சேவையகங்கள் மூலம் இந்தப் பிரச்சனை எவ்வாறு தீர்க்கப்பட்டது என்பதை நினைவில் கொள்கிறீர்களா?"

"ஆம், நாங்கள் துறைமுகங்களைச் சேர்த்துள்ளோம்."

"சரியாக."

"இது ஒரு வீட்டில் சிறிய அறைகளை உருவாக்கி, வீட்டை ஒரு அடுக்குமாடி கட்டிடம் என்று சொல்வது போல. ஒவ்வொரு துறைமுகமும் தனித்தனி அடுக்குமாடி குடியிருப்பு போல. "

"ஒரு IP முகவரி ஒரு கணினிக்கான தனித்துவமான அடையாளங்காட்டியாக இருந்தால், ஒரு IP முகவரியானது ஒரு போர்ட்டுடன் இணைந்த ஒரு குறிப்பிட்ட 'அபார்ட்மெண்ட்'க்கான தனிப்பட்ட அடையாளங்காட்டியாகும், அங்கு ஒரு நிரல் வசிக்க முடியும். "

"இந்த தனித்துவமான இடம் சாக்கெட் என்று அழைக்கப்படுகிறது ."

"ஒரு சாக்கெட் அதன் சொந்த தனித்துவமான எண்ணைக் கொண்டுள்ளது, அதில் ஐபி முகவரி மற்றும் போர்ட் எண் உள்ளது. "

"ஆ. வேறு வார்த்தைகளில் கூறுவதானால், ஒரு நிரல் வசிக்கக்கூடிய சில மெய்நிகர் கணினி இருப்பிடத்திற்கான ஒரு சாக்கெட் ஒரு அடையாளங்காட்டியாகும்? மற்றொரு நிரல் இந்த இடத்திற்கு செய்திகளை அனுப்புகிறது, இது இரண்டு நிரல்களையும் தொடர்பு கொள்ள உதவுகிறது?"

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

"என் ரோபோ சென்ஸ் என்னிடம் சொன்னது."

"அருமை. அப்படியானால் சில விவரங்களைத் தருகிறேன்."

"நிரல்கள் தொடர்புகொள்வதற்கான மிகவும் அடிப்படை மற்றும் பழமையான வழி சாக்கெட்டுகள்."

"சாக்கெட்டுகளுடன் வேலை செய்வதற்கு ஜாவாவில் இரண்டு வகுப்புகள் உள்ளன. அவை சாக்கெட் மற்றும் சர்வர்சாக்கெட் ."

" சர்வர்சாக்கெட் என்பது ஒரு சிறப்பு வகுப்பாகும், அதன் பொருள்கள் சர்வரைக் குறிக்கின்றன, அதாவது ஒரு குறிப்பிட்ட சாக்கெட்டில் வரும் சேவை கோரிக்கைகளை அவை எனக்கு அனுமதிக்கின்றன."

" சாக்கெட் கிளாஸ் என்பது உண்மையில் ஒரு கிளையன்ட் சாக்கெட். நாங்கள் அதை மற்றொரு சாக்கெட்டுக்கு செய்திகளை அனுப்பவும் பதில்களைப் பெறவும் பயன்படுத்துகிறோம்."

"சாக்கெட்டுக்கு ஒரு செய்தியை எப்படி அனுப்புவது என்பது இங்கே:"

உதாரணமாக
// Create a socket
Socket clientSocket = new Socket("localhost", 4444);

// Get an OutputStream
OutputStream outputStream = clientSocket.getOutputStream();
PrintWriter out = new PrintWriter(outputStream, true);
out.println("Kiss my shiny metal ass!");
out.flush();

// Read the response
InputStream inputStream = clientSocket.getInputStream();
BufferedReader in = new BufferedReader(new InputStreamReader(inputStream));
String answer = in.readLine();

"இணையத்திலிருந்து ஒரு கோப்பைப் பதிவிறக்குவதற்கு இது மிகவும் ஒத்திருக்கிறது."

"அது, என் பையன், அங்கும் சாக்கெட்டுகள் பயன்படுத்தப்படுவதால்."

"நெட்வொர்க்குடன் தொடர்புடைய எல்லாவற்றின் இதயத்திலும் சாக்கெட்டுகள் உள்ளன - சரி, கிட்டத்தட்ட எல்லாமே."

"கூடுதல் தகவல்களை இங்கே படிக்கலாம் "

"பாடத்திற்கு நன்றி, ரிஷி."

"நான் இன்னும் முடிக்கவில்லை, அது ஆசைக்குரிய சிந்தனை."

"இப்போது சர்வர் சாக்கெட் எவ்வாறு செயல்படுகிறது என்பதை ஆராய்வோம்."

"இது இன்னும் கொஞ்சம் சிக்கலானது."

உதாரணமாக
// Create a server socket object
ServerSocket serverSocket = new ServerSocket(4444); // Port

// Process incoming connections in a loop
while (true)
{
 // The accept method waits for someone to connect
 Socket socket = serverSocket.accept();

 // Read the response
 InputStream inputStream = socket.getInputStream();
 BufferedReader in = new BufferedReader(new InputStreamReader(inputStream));
 String message = in.readLine();

 // Create a response - we'll just reverse the string
 String reverseMessage = new StringBuilder(message).reverse().toString();

 // Send the response
 OutputStream outputStream = socket.getOutputStream();
 PrintWriter out = new PrintWriter(outputStream, true);
 out.println(reverseMessage);
 out.flush();
}

"உங்கள் கவனத்தை ஓரிரு புள்ளிகளுக்கு ஈர்க்க விரும்புகிறேன்."

"புள்ளி 1: ஒரு (கிளையன்ட்) சாக்கெட்டை உருவாக்க, நீங்கள் ஒரு ஐபி முகவரி (அல்லது டொமைன் பெயர்) மற்றும் போர்ட்டைக் குறிப்பிட வேண்டும். சர்வர் சாக்கெட்டை உருவாக்க, நீங்கள் ஒரு போர்ட்டை மட்டும் குறிப்பிட வேண்டும். சர்வர் சாக்கெட் கணினியில் மட்டுமே உள்ளது. அது உருவாக்கப்பட்டது."

"புள்ளி 2: சர்வர்சாக்கெட் வகுப்பில் உள்வரும் இணைப்புக்காகக் காத்திருக்கும் ஒரு ஏற்றுக்கொள்ளும்() முறை உள்ளது. வேறுவிதமாகக் கூறினால், சில கிளையன்ட் சாக்கெட் இணைக்க முயற்சிக்கும் வரை இந்த முறை என்றென்றும் இயங்கும். பின்னர் ஏற்றுக்கொள்ளும்() முறை இணைப்பை ஏற்றுக்கொண்டு, ஒரு சாக்கெட்டை உருவாக்குகிறது. தகவல்தொடர்புகளை அனுமதிக்கும் பொருள், பின்னர் இந்த பொருளைத் திருப்பித் தருகிறது."

"ஒரு ஜாவா புரோகிராமரின் பார்வையில், ஒரு சாக்கெட் என்பது இரண்டு ஸ்ட்ரீம்கள்: நீங்கள் செய்திகள்/தரவைப் படிக்கும் ஒரு உள்ளீடு ஸ்ட்ரீம் மற்றும் நீங்கள் செய்திகள்/தரவை எழுதும் அவுட்புட் ஸ்ட்ரீம்."

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

"உங்களுக்கான சுவாரஸ்யமான உதாரணம் இங்கே உள்ளது. நீங்கள் அதை தோண்டி இயக்க முயற்சி செய்யலாம்:"

https://www.logicbig.com/tutorials/core-java-tutorial/http-server/http-server-basic.html

"உலாவியிலிருந்து நீங்கள் அணுகக்கூடிய சூப்பர் ப்ரிமிட்டிவ் வெப் சர்வரை எழுத சர்வர் சாக்கெட்டைப் பயன்படுத்துவதே முழுப் புள்ளியாகும்."

"ஆஹா! ஒரு வெப் சர்வர்? கூல்! நான் அதை கவனமாக படிப்பேன்."

"நன்றி, ரிஷி."

"அவ்வளவுதான் அமிகோ. போ ரிலாக்ஸ்!"