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



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

Veri Tabanı-I 1.Hafta

Bölüm 10: PHP ile Veritabanı Uygulamaları

Swing ve JDBC ile Database Erişimi

Script. Statik Sayfa. Dinamik Sayfa. Dinamik Web Sitelerinin Avantajları. İçerik Yönetim Sistemi. PHP Nedir? Avantajları.

JasperReports Server ve Ireport raporlama Sistemi Kurulumu / Kullanımı 1. Bölüm 2. Bölüm 1- JasperReports Server ve Ireport Nedir?

PHP 1. Hafta 1. Sunum

1.PROGRAMLAMAYA GİRİŞ

Üst Düzey Programlama

Ortamınızda A.D. veya LDAP sistemi var ise aşağıdaki linkten KoruMail LDAP-AD isimli dokümanı inceleyebilirsiniz.

Microsoft SQL Server 2008 Oracle Mysql (Ücretsiz) (Uygulamalarımızda bunu kullanacağız) Access

Bilgisayar Uygulamaları. MySql

ProFTPD FTP Sunucusu. Devrim GÜNDÜZ. TR.NET Sistem Destek Uzmanı.

U y g u l a m a A i l e s i (Abakus 360, T-Panel, T-CRM) Tarayıcı Ayarları. IPera İletişim Teknolojileri

Öğr.Gör. Gökhan TURAN Gölhisar Meslek Yüksekokulu

Veritabanı. Ders 2 VERİTABANI

Veritabanı Sızma Testleri Türk Standardları Enstitüsü Yazılım Test ve Belgelendirme Dairesi Başkanlığı

BIL411 - BİLGİSAYAR AĞLARI LABORATUVARI

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

Wireshark Lab.: DNS. 1. nslookup

Turquaz. Açık kodlu muhasebe yazılımı Turquaz Proje Grubu

VPN NEDIR? NASıL KULLANıLıR?

Veri Tabanı-I 1.Hafta

IPv6 Geçiş Yöntemleri Analizi

DHCP kurulumu için Client/Server mimarisine sahip bir ağ ortamı olmalıdır ki bu da ortamda bir Domain Controller olmasını zorunlu kılar.

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

CHAPTER 9. DHCP Server

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

BATMAN ÜNİVERSİTESİ KÜTÜPHANE VERİTABANLARINA KAMPÜS DIŞINDAN ERİŞİM REHBERİ

DNS Nedir? HİKMET TÜYSÜZ

Elektronik Dergi ve Veri Tabanlarına Kampus Dışından Erişim

KANTAR UYGULAMASI Kurulum Kılavuzu

Atılım Üniversitesi Bilgi & Đletişim Teknolojileri Müdürlüğü Sistem Yönetim Uzman Yardımcısı Görev Tanımı

İngilizce'de Relational Database Management System (RDBMS) olarak ifade edilir.

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

Php Programlama Dili MySQL Uygulamaları

PHP ile İnternet Programlama

Bilgisayar Ağları. Ağı oluşturan cihazlar. Coğrafi koşullara göre ağın sınıflandırılması (LAN, MAN, WAN)

Web Tasarımının Temelleri

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

PERKON PDKS Kurulum ve hızlı başlangıç rehberi

Veritabanı Uygulamaları Tasarımı

Kepware Veritabanı Ürünleri. Teknolojiye Genel Bir Bakış

Üst Düzey Programlama

Atılım Üniversitesi Bilgi & Đletişim Teknolojileri Müdürlüğü Sistem Yönetim Uzmanı Görev Tanımı

MCR02-AE Ethernet Temassız Kart Okuyucu

Bilgisayar Programalamaya Giriş

WAMP SERVER KURULUMU

VERİ TABANI YÖNETİM SİSTEMLERİ

LIBPXY SERVİSİNİN KULLANIMI

KÜTÜPHANE KAYNAKLARINA DIŞARIDAN (PROXY SUNUCU KULLANARAK) BAĞLANMAK İÇİN YAPILMASI GEREKENLER A. INTERNET EXPLORER KULLANICILARI İÇİN;

İNTERNET VE BİLGİ AĞLARININ KULLANIMI

DM-501 Tak-Çalıştır GPRS-UART Köprüsü

IPv6 INTERNET PROTOCOL. Hüsnü Demir hdemir at metu.edu.tr

BİLGİSAYAR AĞLARI VE İLETİŞİM

CELAL BAYAR ÜNİVERSİTESİ KÜTÜPHANE VERİTABANLARINA ÜNİVERSİTE DIŞINDAN ERİŞİM

MIRACLE DATA WORKS KURULUM DOKÜMANI

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

Yedek Almak ve Yedekten Geri Dönmek

5651 ve 5070 Sayılı Kanun Tanımlar Yükümlülükler ve Sorumluluklar Logix v2.3 Firewall. Rekare Bilgi Teknolojileri

Miron Yazılım Entegre Uygulamalar (Mironist.NET Yılsonu Devir)

RPMNET WOLVOX REPORTER

BTP 207 İNTERNET PROGRAMCILIĞI I. Ders 1

Program Kurulum. Turquaz Muhasebe. İçindekiler

SİSTEM İHTİYAÇLARI (Tiger Enterprise / Tiger 3 Enterprise)

Veritabanı Dersi. Teoriden Pratiğe. Çağıltay N.E., Tokdemir G. Veritabanı Sistemleri Dersi -Bölüm XXV: Web'den Erişim Çağıltay, N., Tokdemir, G.

BLGM 354 DENEY 1 * GİRİŞ

License. Veri Tabanı Sistemleri. Konular büyük miktarda verinin etkin biçimde tutulması ve işlenmesi. Problem Kayıt Dosyaları

Doğum Yeri : Gölcük Askerlik Durumu : Yapıldı. Uyruğu : T.C Sürücü Belgesi : B Sınıfı (2001)

İnternet Programcılığı

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.

Üst Düzey Programlama

Bilgi ve Olay Yönetim Sistemi

SİSTEM İHTİYAÇLARI (Tiger Plus / Tiger 3)

ÖZGÜR YAZILIMLAR İLE J2EE

Ağ Temelleri. Murat Ozdemir Ondokuz Mayıs Üniversitesi Bilgi İşlem Daire Başkanı 15 Ocak Ref: HNet.23

ORACLE TNS (TRANSPARENT NETWORK SUBSTRATE) LISTENER YAPILANDIRMASI

AĞ TEMELLERİ 4.HAFTA CELAL BAYAR ÜNİVERSİTESİ AKHİSAR MESLEK YÜKSEKOKULU

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


Ders Tanıtım Sunumu. Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı. 26 Şub Öğr. Gör.

MOODLE UZAKTAN ÖĞRETİM SİSTEMİ

Plaka Tanıma. Plaka. Tanıma Sistemi. Sistemi

Gökhan AKIN ĐTÜ/BĐDB Ağ Grubu Başkanı ULAK/CSIRT. Sınmaz KETENCĐ ĐTÜ/BĐDB Ağ Uzmanı

Veri Tabanı Yönetim Sistemleri Bölüm - 3

Meşrutiyet Caddesi 12/ Kızılay/ANKARA T: +90 (312) info@cliguru.com

BİLİŞİM TEKNOLOJİLERİ VE YAZILIM DERSİ

Yeni Nesil Ağ Güvenliği

Zilabs VoIP uygulaması için ADSL Ayarları

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

WINDOWS SERVER 2008 R2 REMOTE DESKTOP SERVICES RD Connection Broker

Bilgisayar Sistemleri ilk ortaya çıktığında...

Ağ temelleri. Ders notları 5. Öğr.Gör. Hüseyin Bilal MACİT 2017

AĞ HİZMETLERİ. Öğr.Gör.Volkan ALTINTAŞ. Version 4.0

Coslat Monitor (Raporcu)

HAFTA-3 ARP (Address Resolution Protocol) (Adres Çözümleme Protokolü)

Bu makalede 2003 sunucu, Windows 2003 Server anlamına gelmektedir. Aşağıda yapılan işlemler 2003 R2 sunucu üzerinde denenmiş ve çalıştırılmıştır.

YAYGIN OLARAK KULLANILAN ADSL MODEMLER VE ROUTER AYARLARI

Transkript:

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

Giriş Ağ programlama, uygulamaların ağ ortamı üzerinden iletişimde bulunarak veri alış-verişi yapılmasına olanak verir; bu nedenle ağ programlama uygulamalarda önemli bir yer tutar. Ağ üzerinde uygulama geliştiren tasarımcı, ağ sisteminin yapısını bilmesi gerekir; bu yüzden, Java programlama diliyle ağ programlama nasıl yapılır sorusu sorulmadan önce ağ sistemine bir bakmak yararlı olacaktır. Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 13 2

Kullanıcı/Sunucu (Client/Server) Nedir? - I Kullanıcı, adından da anlaşılacağı gibi bir yerlerden veri almak isteyen uygulamalara/sistemlere verilen isimdir. Örneğin, ağ tarayıcısı en çok bilinen kullanıcı uygulamasıdır. Kullanıcı uygulamalarının karşı tarafında bulunan ve aynı bir garson gibi hizmet veren uygulamalara sunucu denir. Sunucu uygulamasına örnek olarak, yılların efsanevi ağ sunucu uygulaması olan Apache verilebilir (http://www.apache.org). Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 13 3

Kullanıcı/Sunucu (Client/Server) Nedir? - II Ağ sunucusu (Web server) FTP (File Transfer Protocol) sunucusu Telnet sunucusu Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 13 4

IP Adresi ve Port Kavramları -I İnternet e bağlı her sistemin kendisine ait özel bir numarası vardır -ki bu numaraya IP adresi denilmektedir. Örneğin http://www.kodcu.com sitesini barındıran sunucu sistemin IP adresi 212.115.21.14 tür. İnsan belleği sayısal IP adresleri anımsamakta zorluk çeker; dolayısıyla, ayrıca alan adı sistemi mevcuttur (Domain Name System). Alan adlarına örnek olarak www.kodcu.com veya www.riskturk.com isimleri verilebilir. Bir IP adresine birden çok alan adı bağlanabilmektedir. Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 13 5

IP Adresi ve Port Kavramları -II Birçok sunucu uygulamalarının aynı sistem üzerinde çalışmaları, onların aynı IP adresinden hizmet verdiklerini gösterir; ancak, bu sunucu uygulamalarının birbirinden farkı herbirinin farklı port numaralarından hizmet vermeleridir... = 80 = 23 = 21 Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 13 6

Ağ sunucusu 8080. port numarasından hizmet verebilir mi? Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 13 7

Soket Nedir? Soket, IP adresi ve port numarasının birleşiminden oluşan ve uygulama yazılırken ağ içerisindeki altdüzeydeki ayrıntılardan kurtulup, iki sistemin birbirine kolayca bağlanmasını sağlayan bir tanımlama/kavramdır. Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 13 8

Sihirli Numara 127.0.0.1 (Local Loopback) Ağ üzerinde çalışan uygulama geliştirilebilmesi için geliştirme aşamasında belirli bir IP adresine sahip sistem üzerinde çalıştırılması gerekir. Peki ağ üzerinde çalışacak bir uygulama yazılması için her seferinde İnternet e/ağa bağlı olunması mı gerekiyor? IPTest.java Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 13 9

IPv4 ve IPv6 Uyarlamaları -I Şimdilerde ortada IP adres yetmezliği gündeme gelmiştir. Eski sistem yani aslında şu an için kullandığımız IP adres sistemine IPv4 denilmektedir. Bu sistemde IP adresleri ondalık 32-bit işaretsiz sayılardan oluşmaktadır, IPv4 sisteminin iskeleti aaa.bbb.ccc.ddd şeklinde oluşmaktadır. Biraz önce incelenen örnekte bahsi geçen IP adresi IPv4 sistemindeydi, 195.155.246.159 gibi... Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 13 10

IPv4 ve IPv6 Uyarlamaları -II IPv6 sistemi yönlendirme (routing), otomatik adres konfigürasyonu, doğrulama (authentication), gizlilik (privacy) ve taşınır IP (IP mobility) gibi bir çok yeniliği de beraberinde getirmektedir. IPv6 sistemi ise onaltılık (hexadecimal) 128- bit işaretsiz sayılardan oluşmaktadır. Ör: 3ffe:1700:4242:7:500:f8cf:fe21:67cf Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 13 11

Adres Gösterimi Java Programlama dilinde IP adresini ifade etmek için InetAddress sınıfı kullanılır. Bu sınıf J2SE 1.4 te (Java 2 Standart Edition) bir çok değişikliğe uğramıştır. İşin aslı, Java programlama dilini kullanarak uygulama yazan bir kişi için IP adresinin IPv4 veya IPv6 sistemine göre olmasının fazla bir önemi yoktur çünkü InetAddress sınıfı arka planda tüm işleri bizim yerimize halleder. Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 13 12

IPv4 veya IPv6 sistemleri - I InetAddress ipadresi =InetAddress.getByName("www.obje7.com"); Socket s = new Socket(ipAdresi, 80 ); Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 13 13

IPv4 veya IPv6 sistemleri - II Bu ifademiz ise bir sunucu uygulamaya aittir. Bu uygulamamız 8080. port numarasından devamlı olarak dinleme yapıp gelen istekleri karşılamak için tasarlanmıştır. ServerSocket sunucu = new ServerSocket(8080); for(;;) { Socket istemci = sunucu.accept; // kimin baglandigini ogrenelim... InetAddress istemcininadresi = istemci.getinetaddress; } Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 13 14

Sunucu/İstemci Uygulamalar - I Java programlama dilini kullanarak yapacağımız ilk ağ uygulamalar, basit bir sunucu ve istemci üzerine olacaktır. SunucuOrnekBir.java Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 13 15

Sıra Uygulamanın adı Dinlediği port numarası Çalışması Açıklama Original Hata (Eğer oluşmuş ise) 1. SunucuOrnekBir.java 8080 java SunucuOrnekBir Sorun yok, 8080. port numarasından dinlemeye başlar. 2. SunucuOrnekBir.java 8080 java SunucuOrnekBir Sorun var, çünkü 8080. port numarası dolu. Exception in thread "main" java.net.bin dexception: Address already in use: JVM_Bind 3. Tomcat Servlet/JSP container 8080 startup.sh (Linux/Unix için), startup.bat (windows için) Sorun var, çünkü 8080. port numarası dolu. Exception in thread "main" java.net.bindex ception: Address already in use: JVM_Bind Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 13 16

Sunucu/İstemci Uygulamalar II Java programla dilini kullanarak basit bir istemci uygulaması yazmak için sadece java.net paketinin altındaki Socket sınıfını kullanmak yeterli olacaktır. IstemciOrnekBir.java Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 13 17

Detaylar baglanti kabul edildi: Socket[addr=/127.0.0.1,port=1267,localport=8080] soket = Socket[addr=localhost/127.0.0.1,port=8080,localport=1267] Aşağıdaki dörtlünün bir tekillik (uniqie) oluşturması gerekir. İstemcinin IP adresi İstemcinin port numarası Sunucunun IP adresi Sunucunun port numarası Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 13 18

SunucuOrnekBir.java ve IstemciOrnekBir.java uygulamaları arasındaki ilişki Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 13 19

Bloke Bağlantılar-I Bloke bağlantılar, G/Ç (Girdi/Çıktı-I/O-Input/Output) işlemi gerçekleştiği anda uygulamayı havada asılı bırakan bağlantılardır; bir başka deyişle uygulamayı bekleten bağlantılardır. SunucuOrnekBir.java ve IstemciOrnekBir.java arasındaki ilişkinin yönlendiricisi istemci uygulamaydı çünkü istemci uygulama verileri 300ms yerine 1 saatte gönderirse sunucu uygulama böyle bir hareketin karşında boyun eğmek zorundadır. SunucuOrnekIki.java Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 13 20

Bloke Bağlantılar - II SunucuOrnekIki.java uygulamamızın eksikliği ise kendisine gelen tüm istemcilere teker teker hizmet vermesidir. Örneğin iki istemci uygulama bu sunucuya bağlanmak isterlerse, bu istemci uygulamalardan önce biri, daha sonra ise öteki kabul edilecektir. Şimdi IstemciOrnekBir.java içerisindeki Thread.sleep yordamına 300 yerine 10000 yazıp bu istemci uygulamamızı baştan derleyip çalıştırırsak, istemci uygulamalarımız verileri 10000ms bekleterek sunucuya gönderecektir. Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 13 21

İş Parçacıkları (threads) İş Başında Sunucu uygulamalarının aynı anda birçok isteğe cevap verebilmesi için işin içerisine iş parçacıklarının da dahil edilmesi gerekir. SunucuOrnekUc.java Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 13 22

Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 13 23

Havuz Her istemci isteği için ayrı bir iş parçacığının oluşturulması çok lükse kaçar. IstemciOrnekIki.java SunucuOrnekDort.java Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 13 24

URL ve URLConnection Sınıfları URL sınıfının yaptığı başlıca görevlerden biri aynı tarayıcı(browse) gibi çalışmasıdır. 1. mini kurs notlarını bu adresten okuyabilirsiniz : http://www.firmaninadresi/minikurs/ders1250.html 2. mini kurs notlarını bu adresten okuyabilirsiniz : http://www.firmaninadresi/minikurs/ders559.html SayfaBulucu.java Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 13 25

Veritabanı sunucularına bağlantı Veritabanı sunucularına hangi organizasyonların ihtiyacı olabilir? Bankalar Hastaneler Üniversiteler Devlet Daireleri Bankalar, müşteri bilgileri Hastaneler, hasta kayıtlarını Üniversiteler, öğrenci bilgilerini Devlet Daireleri, planlama bilgileri, vatandaş bilgileri..gibi Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 13 26

SQL SQL (Standart Query Language- Standart Sorgulama Dili), veritabanlarını oluşturmak, kontrol etmek ve yönetmek için kullanılan ve 1992 yılında standart hale getirilmiş olan bir dildir. Veritabanı, kalıcı verileri tablo şeklinde saklayan sistem Tablo, satırlardan oluşan yapı Satır, kolonlardan oluşan yapı Kolon, isim, tip ve değere sahip olan tek bir veri yapısı. Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 13 27

JDBC (Java DataBase Connectivity-Java Veritabanı Bağlanılabilirliği) Her veritabanı sunucusunun belli bir üreticisi vardır. Şu an için kullanılan en yaygın veritabanı sunucularından bir kaçı aşağıdaki gibidir. 1. MySQL : 3306 port numarasından hizmet verir. 2. Oracle : 1521 port numarasından hizmet verir. 3. MSSQL : 1433 port numarasından hizmet verir. Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 13 28

Genel Bakış Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 13 29

MySQL için gerekli olanlar... MySQL açık kaynaklı bir projedir. Bu veritabanı sunucusu GPL (GNU General Public License) lisansı altında bedava kullanılabileceği gibi, belirli bir ücret karşılığında ticari lisans altında da kullanılabilir. Sadece MySQL değil tüm veritabanı sunucularına ait sürücüleri (driver) bulabilmek için http://www.java.sun.com/products/jdbc/ adresi ziyaret edilebilir. Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 13 30

CLASSPATH ayarları Java uygulamalarının MySQL veritabanına sunucusuna bağlanabilmesi için sistemimizde iki şeyin olması gerekir. Linux MySQL veritabanı MySQL sürücüsü $ setenv CLASSPATH /kurulum/dizini/mm.mysql.jdbc-[versiyon]:$classpath Windows C:\> set CLASSPATH=\kurulum\dizini\mm.mysql.jdbc-[versiyon];%CLASSPATH% VeritabaniBaglantiTestBir.java Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 13 31

Sürücünün(Driver) yapısı > jar -xvf mm.mysql-2.0.10-bin.jar Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 13 32

Bağlantı VeritabaniBaglantiTestIki.java Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 13 33

MUSTERI tablosuna yeni bir kayıtın eklenmesi executeupdate() ve executequery() yordamlarının arasındaki farklar nelerdir? VeritabaniBaglantiTestUc.java #> java VeritabaniBaglantiTestUc ONUR AY "BUYU K SITE B BLOK KAT 5 NO 18" "0 262 11112222" "6606645" "ONUR@ONUR.COM" "IZMIT" " KURUCESME" Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 13 34

MUSTERI tablosundaki mevcut kayıtların değiştirilmesi ve silinmesi VeritabaniBaglantiTestDort.java VeritabaniBaglantiTestBes.java Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 13 35

Sorular... Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 13 36