Soket, bir sunucu programı ve bir veya birden çok istemci programı arasında çift yönlü iletişim kuran bir yazılım uç noktasıdır.



Benzer belgeler
Bölüm 24. Java Ağ Uygulamaları 24.1 Java Appletleri. Bir Applet in Yaşam Döngüsü:

Görsel Programlama DERS 12. Görsel Programlama - Ders12/

BMS-302 İleri Web Programlama. İş Parçacığı (Thread) ve Soket (Socket) Programlama

Start : Bu method init methodundan hemen sonra çalışır ve applet dosyası yürütülmeye başladığında çalışmaya başlar.

JAVA ile DAĞITIK PROGRAMLAMA

Java Programlamada Paket Yapısı Ve Import

Java da İstemci Tarafı Uygulamalar

Üst Düzey Programlama

MAT213 BİLGİSAYAR PROGRAMLAMA I DERSİ Ders 1: Programlamaya Giriş

BM-209 Nesne Yönelimli Programlama. Yrd. Doç. Dr. İbrahim Alper Doğru Gazi Üniversitesi Teknoloji Fakültesi Bilgisayar Mühendisliği Bölümü

/*Aşağıda ki kodları doğru şekilde anlar ve kullanırsanız java da sınıfları biraz da olsa anlamış olursunuz.*/

MAT214 BİLGİSAYAR PROGRAMLAMA II DERSİ Ders 12: Grafik Kullanıcı Arayüzü (Graphical User Interface-GUI)

F.Ü. Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü Bilgisayar Sistemleri Laboratuvarı DENEY NO: 6 JAVA İLE DAĞITIK PROGRAMLAMA.

// hataları işaret eden referans

Görsel Programlama DERS 03. Görsel Programlama - Ders03/ 1


1. Aşağıdaki program parçacığını çalıştırdığınızda result ve param değişkenlerinin aldığı en son değerleri ve programın çıktısını yazınız.

Üst Düzey Programlama

Programlama Dillerinde Kullanılan Veri Tipleri

Ayni sistem(host) üzerinde IPC. Ağ(network) aracılığı ile IPC

JAVA API v2.0 Belge sürümü: 2.0.2

KARADENİZ TEKNİK ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ BİLGİSAYAR AĞLARI LABORATUARI. Soket Programlama

BİL BİLGİSAYAR PROGRAMLAMA (JAVA)

BİL132 Bilgisayar Programlama II

JAVA DA GİRİŞ/ÇIKIŞ İŞLEMLERİ. Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 1

MCR02-AE Ethernet Temassız Kart Okuyucu

BİL-141 Bilgisayar Programlama I (Java)

BMH-303 Nesneye Yönelik Programlama

2.Eclipse açıldıktan sonra Workspace alanı seçilmesi gerekir. Workspace alanı projelerinizin fiziksel olarak bulunduğu kısımdır.

Paket Erişimleri. Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 4 1

JDBC kütüphanesi, her görev için genellikle veritabanı kullanımı ile ilişkili API leri içerir:

PAKET TRANSFER SİSTEMİ

Dünyanın bilgisine açılan pencere... Ya da sadece yeni çağın eğlencesi...

Bölüm3 Taşıma Katmanı. Transport Layer 3-1

TCP/IP. TCP (Transmission Control Protocol) Paketlerin iletimi. IP (Internet Protocol) Paketlerin yönlendirmesi TCP / IP

Öğr. Gör. Serkan AKSU 1

BLGM 343 DENEY 8 * TCP İLE VERİ İLETİŞİMİ

Üst Düzey Programlama

Erişim konusunda iki taraf vardır:

TachoMobile Server Uygulaması Kullanım Kılavuzu

BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ

Lab7 DOĞU AKDENİZ ÜNİVERSİTESİ BİLGİSAYAR VE TEKNOLOJİ YÜKSEKOKULU BİLGİSAYAR PROGRAMCILIĞI. BTEP212 Java. Uygulama1: package javaapplication58;

Java ile Nesneye Yönelik Programlama (Object Oriented Programming)

BTP 207 İNTERNET PROGRAMCILIĞI I. Ders 1

İNÖNÜ ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ 2. SINIF 1. DÖNEM VERİ YAPILARI DERSİ LABORATUAR ÖDEVİ

ECLIPSE PROGRAMININ ÇALIŞTIRILMASI

Web Servis-Web Sitesi Bağlantısı

BM 402 Bilgisayar Ağları (Computer Networks)

PAKET TRANSFER SİSTEMİ

C# ile e-posta Göndermek

BIL411 - BİLGİSAYAR AĞLARI LABORATUVARI

ByteArrayOutputStream

JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ

PAKET TRANSFER SİSTEMİ

Internet: Tarihçe ve Kavramlar

F.Ü. Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü Bilgisayar Sistemleri Laboratuvarı DENEY NO: 6 JAVA İLE DAĞITIK PROGRAMLAMA.

APPLET KAVRAMI ve GRAFİKSEL ÇİZİM UYGULAMLARI

İNTERNET VE BİLGİ AĞLARININ KULLANIMI

TÜRKİYE ELEKTRONİK FON ALIM SATIM PLATFORMU WEB SERVİS İŞLEMLERİ

Ağ programlama (Network programming) Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 13 1

Computer Networks 5. Öğr. Gör. Yeşim AKTAŞ Bilgisayar Mühendisliği A.B.D.

Üst Düzey Programlama

AĞ ve İNTERNET TCP/IP. IP Adresi İNTERNET NEDİR? Standartlar :

Java Programlamada Paket Yapısı Ve Import

Bir port aynı anda bir process tarafından dinlenebilir. Fakat bir process birden fazla portu dinleyebilir.

Java da Soyutlama ( Abstraction ) ve Çok-biçimlilik ( Polymorphism )

TARİHÇE. Versiyon Tarih Düzenleyen Açıklama Engin DURMAZ İlk versiyon

Start : Bu method init methodundan hemen sonra çalışır ve applet dosyası yürütülmeye başladığında çalışmaya başlar.

BM 402 Bilgisayar Ağları (Computer Networks)

Intercepting Filter Tasarım Şablonu KurumsalJava.com

Dünyanın bilgisine açılan pencere... Ya da sadece yeni çağın eğlencesi...

Cybersoft Bilişim Teknolojileri Sunucu Tarafı Programlaması Kursu Final soruları. Tarih: 27 Kasım 2010 Saat: 13:30 Süre: 3 saat

Kurumsal Güvenlik ve Web Filtreleme

Gazi Üniversitesi Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü. Bilgisayar Ağları Dersi Lab. 2

ORACLE TNS (TRANSPARENT NETWORK SUBSTRATE) LISTENER YAPILANDIRMASI

Scanner Sınıfı. Class Scanner. java.util. java.lang.object java.util.scanner. Kılgıladığı Arayüzler: Closeable, AutoCloseable, Iterator<String>

BLGM 344 DENEY 3 * AĞ PROGRAMLAMAYA GİRİŞ

Gazi Üniversitesi Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü. Bilgisayar Ağları Dersi Lab. 2. İçerik. IP ICMP MAC Tracert

Kurumsal Güvenlik ve Web Filtreleme

Üst Düzey Programlama

Eclipse, Nesneler ve Java 2 Java Nereden Çıktı? 2

Görsel Programlama DERS 01. Görsel Programlama - Ders01/ 1

Google Chrome Kullanıyorsanız; Microsoft Internet Explorer Kullanıyorsanız;

Html temelleri. Ders 4

ACR-Net 100 Kullanım Kılavuzu

EC-485. Ethernet RS485 Çevirici. İstanbul Yazılım ve Elektronik Teknolojileri

BİL-141 Bilgisayar Programlama I (Java)

Network üzerinde MATLAB kurulması

CSSigner, Cybersoft firması tarafından geliştirilmiş açık kaynak kodlu e-imza yazılım kütüphanesidir.

BMÜ-112 ALGORİTMA VE PROGRAMLAMA-II LABORATUARI DENEY-2 FÖYÜ

Nesne tabanlı programlama nesneleri kullanan programlamayı içerir. Bir nesne farklı olarak tanımlanabilen gerçek dünyadaki bir varlıktır.

Bilgisayar Programcılığı Uzaktan Eğitim Programı. e-bilg 121 AĞ TEKNOLOJİLERİNİN TEMELLERİ Öğr. Gör. Bekir Güler

Karşılaştırma İşlemleri ve Koşullu İfadeler

Hızlı Kurulum Kılavuzu

Ağ Nedir? Birden fazla bilgisayarın iletişimini sağlayan printer vb. kaynakları, daha iyi ve ortaklaşa kullanımı sağlayan yapılara denir.

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

MASTER PAGE SAYFASI KULLANIMI

MIRACLE DATA WORKS KURULUM DOKÜMANI

MOBIL UYGULAMA GELIŞTIRME

İş Parçacıkları Thread(s)

Transkript:

Bölüm 24 Java Ağ Uygulamaları 24.1 Java Soket Programlama Soket, bir sunucu programı ve bir veya birden çok istemci programı arasında çift yönlü iletişim kuran bir yazılım uç noktasıdır. Sunucu programı genellikle istemci programları ağına kaynak sağlar. İstemci programları, sunucu programına istekler gönderir ve server programı da bu isteklere yanıt verir. Thread(iş parçacığı) kullanarak, multi-threaded(çoklu iş parçacığı) sunucu programı istemciden genel bağlantıyı kabul edebilir, bu bağlantı için thread başlatılır ve diğer istemcilerin istekleri dinlenilmeye devam edilir. java.net paketi 2 yaygın ağ protokolü için destek sağlar: TCP: TCP, Transmission Control Protocol anlamına gelir ve bu protokol iki uygulama arasında güvenilir iletişim sağlar. TCP genellikle, TCP/IP olarak anılan Internet Protocol üzerinden kullanır. UDP: UDP, User Datagram Protocol anlamına gelir, ve bu bağlantısız protokol uygulamalar arasında aktarılacak veri paketleri sağlar Bağlantı kurulduğunda, sunucu iletişimin sonunda bir soket objesi yaratır. İstemci ve sunucu bundan soketten yazıp okuyarak iletişim kurabilirler.

Aşağıdaki adımlar, soketleri kullanan iki bilgisayar arasında TCP bağlantısı kurulurken meydana gelir. 1. Sunucu, port numarası iletişimi oluştuğunu gösteren bir ServerSocket nesnesini somutlaştırır. 2. Sunucu, ServerSocket sınıfındaki accept() metodunu çalıştırır. Bu metot, istemcinin verilen port numarası üstündeki sunucuya bağlamasına kadar devam eder. 3. İstemci, bağlantı kurulacak sunucu adı ve port numarsını belirterek Socket nesnesini somutlaştırır. 4. Socket sınıfının constructor ı, belirtilen sunucu ve port numarasından istemciye bağlanma girişiminde bulunur. Eğer iletişim kurulursa, istemci sunucu ile iletişim kurma yeteneğine sahip Socket nesnesini edinir. Bağlantılar kurulduktan sonra, iletişim I/O streams kullanılarak meydana gelebilir. Her soket hem bir OutputStream hem de bir InputStream e sahiptir. İstemcinin OutputStream i, sunucunun InputStream ine bağlanır ve istemcinin InputStream I sunucunun OutputStream ine bağlanır. TCP iki yönlü iletişim protokolüdür, bu yüzden veri, eş zamanlı her iki stream in karşısına gönderilebilir.

SimpleServer.Java import java.net.*; import java.io.*; public class SimpleServer extends Thread private ServerSocket serversocket; public SimpleServer(int port) throws IOException serversocket = new ServerSocket(port); serversocket.setsotimeout(100000); public void run() while(true) try System.out.println("Waiting for client on port "+ serversocket.getlocalport()); Socket server = serversocket.accept(); System.out.println("Just connected to " + server.getremotesocketaddress()); DataInputStream in = new DataInputStream(server.getInputStream()); System.out.println(in.readUTF()); DataOutputStream out = new DataOutputStream(server.getOutputStream()); out.writeutf("thank you for connecting to " + server.getlocalsocketaddress() + "\ngoodbye!"); server.close(); catch(sockettimeoutexception s) System.out.println("Socket timed out!"); break; catch(ioexception e) e.printstacktrace(); break; public static void main(string [] args) try // use TCP 6666 port Thread t = new SimpleServer(6666); t.start(); catch(ioexception e) e.printstacktrace();

SimpleClient.Java import java.net.*; import java.io.*; public class SimpleClient public static void main(string [] args) String servername = "localhost"; int port = 6666; try System.out.println("Connecting to " + servername + " on port " + port); Socket client = new Socket(serverName, port); System.out.println("Just connected to " + client.getremotesocketaddress()); OutputStream outtoserver = client.getoutputstream(); DataOutputStream out = new DataOutputStream(outToServer); out.writeutf("hello from " + client.getlocalsocketaddress()); InputStream infromserver = client.getinputstream(); DataInputStream in = new DataInputStream(inFromServer); System.out.println("Server says " + in.readutf()); client.close(); catch(ioexception e) e.printstacktrace(); 24.2 E-mail Gönderme Java Uygulamanızı kullanarak email göndermek oldukça kolaydır ama başlamak için öncellikle JavaMail API si makinanıza kurulu olmalıdır. JavaMail in son versiyonunu, Java nın standart web sitesinden indirebilirsiniz. http://www.oracle.com/technetwork/java/javamail/index-138643.html Dosyaları indirin ve açın, her iki uygulama için bir dizi jar dosyası bulacaksınız. Öncelikle mail.jar dosyalarını CLASSPATH konumuna eklemeniz gerekmektedir( Eclipse içindeki src dizinine sürükleyip bırakın, mail.jar dosyasına sağ tıklayıp Build Path-> Add to Build Path kısmını seçin) Burada, GOOGLE GMAIL SMTP SERVER aracılığıyla basit bir email gönderme örneğini görüyoruz. Burada, localhost unuzun internete bağlı olduğu ve email göndermek için yeterli olduğu varsayılıyor.

import java.util.*; import javax.mail.*; import javax.mail.internet.*; public class SendEmail public static void main(string[] args) // Sender's email ID needs to be mentioned String from = "sender@gmail.com"; String pass = "123456"; // Recipient's email ID needs to be mentioned. String to = "someone@hotmail.com"; String host = "smtp.gmail.com"; // Get system properties Properties properties = System.getProperties(); // Setup mail server properties.put("mail.smtp.starttls.enable", "true"); properties.put("mail.smtp.host", host); properties.put("mail.smtp.user", from); properties.put("mail.smtp.password", pass); properties.put("mail.smtp.port", "587"); properties.put("mail.smtp.auth", "true"); // Get the default Session object. Session session = Session.getDefaultInstance(properties); try // Create a default MimeMessage object. MimeMessage message = new MimeMessage(session); // Set From: header field of the header. message.setfrom(new InternetAddress(from)); // Set To: header field of the header. message.addrecipient(message.recipienttype.to, new InternetAddress(to)); // Set Subject: header field message.setsubject("this is the Subject Line!"); // Now set the actual message message.settext("this is actual message"); // Send message Transport transport = session.gettransport("smtp"); transport.connect(host, from, pass); transport.sendmessage(message, message.getallrecipients()); transport.close(); System.out.println("Sent message successfully..."); catch (MessagingException mex) mex.printstacktrace();

24.3 Java Appletleri Applet, Web tarayıcısında çalışan bir Java programıdır. Bir applet, Java uygulaması için tamamen fonskiyonel olabilir çünkü bütün Java API ye sahiptir. Bir applet ve bir bağımsız Java uygulaması arasında aşağıdakiler gibi bazı önemli farklılıklar bulunmaktadır: Applet, java.applet.applet sınıfından genişletilen bir Java sınıfıdır. main() metodu applet üzerinde çalışmaz ve applet sınıfı main() metodunu tanımlamamaktadır. Appletler, HTML sayfasında gömülü olarak tasarlanır. Bir kullanıcı applet içeren bir HTML sayfasını görüntülediğinde, applet için olan kod kullanıcı makinasına indirilir. Bir JVM nin applet görüntülemesi gerekmektedir. JVM, hem bir Web tarayıcının eklentisi olabilir hem de ayrı bir çalışma zamanında bulunan enviroment olabilir. Kullanıcı makinesine kurulu JVM, applet sınıfı için bir instance oluşturur ve applet in yaşam süresince çeşitli metotlar çalıştırır. Bir Applet in Yaşam Döngüsü: Applet sınıfındaki dört metot size üzerinde önemli bir applet oluşturabileceğiniz bir çalışma ortamı verir. init: Bu metot, applet için gerekli olan her türlü başlatma için tasarlanmıştır. start: Bu metot, tarayıcı init metodunu çağırdıktan sonra otomatik olarak çağrılır. Ayrıca, kullanıcı diğer sayflara gittikten sonra her ne zaman applet i içeren sayfaya geri dönerse çağrılır. paint: start() metodunun hemen ardından ve ayrıca applet her ne zaman tarayıcıda kendini yeniden düzenlemesi gerekiyorsa çalıştırılır.

stop: Bu metot, kullanıcının appletin bulunduğu sayfadan ayrıldığı zaman otomatik olarak çağrılır. Bu nedenle, bu metot aynı applet içinde durmadan çağrılabilir. destroy: Bu metot sadece tarayıcı kapatıldığı zaman çağrılır. "Hello, World" Applet: Aşağıdaki, HelloWorldApplet.java olarak adlandırılmış basit bir appletdir: import java.applet.*; import java.awt.*; public class HelloWorldApplet extends Applet public void paint (Graphics g) g.drawstring ("Hello World", 25, 50); Applet Sınıfı: Her applet, java.applet.applet sınıfının bir uzantısıdır. Temel Applet sınıfı, Applet sınıfından elde edilmiş ve tarayıcı içeriğinden bilgi ve servisler almak için çağrılabilir metotlar sağlar.

Bir Applet i Çalıştırma: Bir applet, HTML dosyasına gömülü bildirimler tarafından çalıştırılabilir ve bu dosya bir applet görüntüleyici veya üstünde Java gömülü bulunan tarayıcılar tarafından görüntülenebilir. <applet> etiketi, appleti bir HTML dosyasına gömmek için temel bir etikettir. Aşağıda, Hello World isimli appletin çalıştırılmasını görebiliriz: <html> <title> Hello World Applet</title> <applet code="helloworldapplet.class" width="320" height="120"> </applet> </html> --<applet> etiketinin kod niteliği gereklidir. Bu, çalışması gereken Applet sınıfını belirtir. Ayrıca width ve height ta,applet in çalışacağa panelin ilk boyunu belirlemek için gereklidir. Applet bildirimi </applet> etiketi ile kapatılmalıdır. Applet Parametrelerini Belirleme: Aşağıdaki örnek, appletin dökümanda belirlenen parametre ayarlarını nasıl cevaplayacağını göstermektedir. Applet.getParameter() metodu verilen parametre adına göre parametre getirir.(parametrenin değeri her zaman stringtir) import java.applet.*; import java.awt.*; public class appletparameter extends Applet private String strdefault = "Hello! Java Applet."; public void paint(graphics g) String strparameter = getparameter("message"); if (strparameter == null) strparameter = strdefault;

setbackground(color.green); g.drawstring(strparameter, 50, 25); --Aşağıdaki içine appletparameter.class gömülü bir HTML dosyası örneğidir. HTML dosyası <param> etiketini kullanarak appletin parametlerini belirler. <html> <title>applet Test</title> <h1> This is the applet: </h1> <applet code="appletparameter.class" width="800" height="100"> <param name="message" value="this is HTML parameter Text."> </applet> </html> Not: Parametre isimleri büyük küçük harfe duyarlı değildir.