"Merhaba, Amigo!"

"Merhaba Rishi!"

"Bugünün dersinin konusu prizler."

"Ağdaki her bilgisayarın kendi benzersiz IP adresine sahip olduğunu zaten biliyorsunuz."

"Evet."

"Şimdi, her biri İnternet'e erişen bir düzine program çalıştıran birkaç bilgisayarınız olduğunu hayal edin: Skype, ICQ, vb."

"Ve bu programlar birbirleriyle iletişim kurmak istiyor."

"Birbirlerine müdahale etmelerini engellemeliyiz. Skype'ın Skype'a, Slack'in Slack'e vb. bağlanmasını sağlamalıyız."

"URL'ler ve web sunucuları ile bu sorunun nasıl çözüldüğünü hatırlıyor musunuz?"

"Evet, bağlantı noktaları ekledik."

"Kesinlikle."

"Bu tıpkı bir evde bir sürü küçük oda yapıp, evin bir apartman olduğunu söylemek gibi. Her liman ayrı bir apartman dairesi gibidir. "

"Bir IP adresi bir bilgisayar için benzersiz bir tanımlayıcıysa, o zaman bir bağlantı noktasıyla birleştirilmiş bir IP adresi, bilgisayarda bir programın bulunabileceği belirli bir 'daire' için benzersiz bir tanımlayıcıdır. "

"Bu eşsiz yere soket denir ."

"Bir soket , bir IP adresi ve bir bağlantı noktası numarasından oluşan kendi benzersiz numarasına sahiptir . "

"Ah. Başka bir deyişle, soket, bir programın bulunabileceği bazı sanal bilgisayar konumlarının tanımlayıcısıdır? Ve başka bir program bu konuma mesajlar göndererek iki programın iletişim kurmasını sağlar?"

"Bunu nasıl anladın bilmiyorum ama kesinlikle doğru."

"Robo-hislerim bana söyledi."

"Harika. O zaman sana bazı ayrıntılar vereyim."

"Yuvalar aslında programların iletişim kurmasının en temel ve ilkel yoludur."

"Java'nın yuvalarla çalışmak için iki sınıfı vardır. Bunlar Socket ve ServerSocket ."

" ServerSocket , nesneleri sunucuyu temsil eden özel bir sınıftır, yani belirli bir sokete gelen isteklerin servis edilmesini sağlar."

" Socket sınıfı aslında bir istemci soketidir. Onu başka bir sokete mesaj göndermek ve yanıtları almak için kullanırız."

"İşte bir sokete nasıl mesaj gönderileceği:"

Örnek
// 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();

"İnternetten bir dosya indirmeye çok benzer."

"Oğlum, çünkü orada da prizler kullanılıyor."

"Soketler, bir ağla ilgili her şeyin - yani neredeyse her şeyin - kalbinde yer alır."

"Ek bilgileri buradan okuyabilirsiniz "

"Ders için teşekkürler Rishi."

"Henüz işim bitmedi. Bu bir hüsnükuruntu."

"Şimdi bir sunucu soketinin nasıl çalıştığını inceleyeceğiz."

"Bu biraz daha karmaşık."

Örnek
// 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();
}

"Bir iki noktaya dikkatinizi çekmek istiyorum."

"Puan 1: Bir (istemci) soketi oluşturmak için bir IP adresi (veya alan adı) ve port belirtmeniz gerekir. Bir sunucu soketi oluşturmak için sadece bir port belirtmeniz gerekir. Sunucu soketi yalnızca bulunduğu bilgisayarda bulunur. yaratıldı."

"2. Nokta: ServerSocket sınıfı, gelen bir bağlantıyı bekleyen bir accept() yöntemine sahiptir. Diğer bir deyişle, yöntem, bazı istemci soketleri bağlanmaya çalışana kadar sonsuza kadar çalışacaktır. Ardından accept() yöntemi bağlantıyı kabul eder, bir soket oluşturur iletişime izin vermek için nesne ve ardından bu nesneyi döndürür."

"Bir Java programcısının bakış açısından, bir soket iki akıştır: mesajları/verileri okuduğunuz bir InputStream ve mesajları/verileri yazdığınız bir OutputStream."

"Sunucu soketi oluşturduğunuzda aslında diğer bilgisayarlardaki istemci soketlerinin bağlanabileceği bir port yapmış oluyorsunuz. Ancak bunun için bizim soketimizin port numarasını ve bilgisayarımızın IP adresini doğru bir şekilde belirtmeleri gerekiyor. Peki, veya alan adı."

"İşte size ilginç bir örnek. İçine girmeyi ve çalıştırmayı deneyebilirsiniz:"

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

"Bütün mesele, bir tarayıcıdan kolayca erişebileceğiniz süper ilkel bir web sunucusu yazmak için bir sunucu soketi kullanmaktır."

"Vay canına! Bir web sunucusu mu? Harika! Onu çok dikkatli inceleyeceğim."

"Teşekkürler Rishi."

"Hepsi bu, Amigo. Git rahatla!"