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

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

Soket IPC (bağlantı doğrultusunda olan istemci and sunucu operasyonları) Sunucu. İstemci. socket() Bir soket yarat. bind()

Bölüm 28 ve 29 : İstemci Sunucu Etkileşimi ve Soket API sine Giriş. Internet Protokolleri ve Ağ Uygulamaları. Internet Protokolleri Üzerinden İletişim

Bölüm 28 ve 29 : İstemci Sunucu Etkileşimi ve Soket API sine Giriş

Bölüm 28 ve 29 : İstemci Sunucu Etkileşimi ve Soket API sine Giriş. Internet Protokolleri ve Ağ Uygulamaları. Internet Protokolleri Üzerinden İletişim

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

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

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

Karadeniz Teknik Üniversitesi Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü Bilgisayar Sistemleri Laboratuarı ĐSTEMCĐ VE SUNUCU MĐMARĐLERĐ

Toplu İleti Gönderimi

Web Sunucusu BLGM 344 Bilgisayar Ağları Proje. BLGM 344 Proje 1* WEB SUNUCUSU UYGULAMASI

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

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

MCR02-AE Ethernet Temassız Kart Okuyucu

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

Ağ Altyapısı ve Dağıtılmış İşlem

Ağ Altyapısı ve Dağıtılmış İşlem

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.

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

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

Kurumsal Güvenlik ve Web Filtreleme

Saldırı Tespit ve Engelleme Sistemleri Eğitimi Ön Hazırlık Soruları

Kurumsal Güvenlik ve Web Filtreleme


Bilin tarafından verilen Kullanıcı Adı ve Şifresini bu alanlara giriniz. Bilin Yazılım ve Bilişim Danışmanlığı Ltd. Şti.

EC-100. Ethernet RS232/422/485 Çevirici. İstanbul Yazılım ve Elektronik Teknolojileri

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

Ortam İzleyici Kullanım Kılavuzu

Web Servis-Web Sitesi Bağlantısı

HACETTEPE ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ BİLGİSAYAR AĞLARI LABORATUVARI DENEY 5. Yönlendiricilerde İşlem İzleme ve Hata Ayıklama

BQ Modbus Analog Giriş Kartı 6 Kanal 4 20mA. Kullanım Kılavuzu. Doküman Versiyon: BQTEK

NJ İLE UDP/IP ÜZERİNDEN SOKET SERVİS. 1) Soket Servis 2) Soket Servis Ayarları 3) Soket Servis Komutları 4) Örnek Uygulama 5) Multiway

Öğrenciler için Kablosuz İnternet Erişimi (Wi-Fi) Kullanım Kılavuzu

BIL411 - BİLGİSAYAR AĞLARI LABORATUVARI

EC-232C. Ethernet RS232 Çevirici. İstanbul Yazılım ve Elektronik Teknolojileri

BM 402 Bilgisayar Ağları (Computer Networks)

Coslat Monitor (Raporcu)

Kets DocPlace LOGO Entegrasyonu

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.

CHAPTER 9. DHCP Server

PARALOG POS AKTARIMLARI. Derece Yazılım 2009

BQ Modbus Analog Giriş Kartı 6 Kanal PT100 - PT1000. Kullanım Kılavuzu. Doküman Versiyon: BQTEK

Bay.t Destek. İnternetten Uzak Erişim. Kullanım Klavuzu

Icerik filtreleme sistemlerini atlatmak icin kullanacağımız yöntem SSH Tünelleme(SSH in SOCKS proxy ozelligini kullanacagiz).

Aktif Dizin Logon/Logoff Script Ayarları Versiyon

Bilgi ve Olay Yönetim Sistemi

Temel Giriş/Çıkış Fonksiyonları

BIL411 - BİLGİSAYAR AĞLARI LABORATUVARI

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

Bilgi ve Olay Yönetim Sistemi


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

Zilabs VoIP uygulaması için ADSL Ayarları

Virtual Router Redundancy Protocol (VRRP)

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

DNS Nedir? HİKMET TÜYSÜZ

YENİ NESİL 720 SÜRÜMÜ e-irsaliye DEĞİŞİKLİKLERİ

*nix' lerde Multicast Kullanımı

Wolvox Kapı Ekranı. AKINSOFT Wolvox Kapı Ekranı Yardım Dosyası. Doküman Versiyon :

COM API v.1.1 BELGE SÜRÜMÜ : 1.1

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

Wireshark Lab.: DNS. 1. nslookup

EpostaGonder V1.4 KULLANIM KLAVUZU

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

IPv6 Geçiş Yöntemleri Analizi

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

ALGORİTMA VE PROGRAMLAMA II

Bu ekrana Kullanıcı adı ve şifre ile giriş yapıldığında ekranda giriş yapabilmeniz için yetki almanız

Öğr. Gör. Ümit ATİLA

AirTies Kablosuz Erişim Noktası (Access Point) olarak kullanacağınız cihazı bilgisayarınıza bağlayarak ayarlarını yapabilirsiniz.

Örnek bir kullanım ve bilgisayar ağlarını oluşturan bileşenlerin özeti

ACR-Net 100 Kullanım Kılavuzu

PARALOG POS ve YAZARKASA Aktarımları. Derece Yazılım 2009

Bölüm 12: UDP ve TCP UDP (User Datagram Protocol)

Free Cooling (Tibbo Ethernet Modüllü)

Fiery Command WorkStation 5.8 ile Fiery Extended Applications 4.4

PERGO TAKİP VE GÜVENLİK SİSTEMLERİ

SAKARYA ÜNİVERSİTESİ BİLGİSAYAR VE BİLİŞİM BİLİMLERİ FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ GÜZ DÖNEMİ PROGRAMLAMAYA GİRİŞ DERSİ

HAZIRLAYAN BEDRİ SERTKAYA Sistem Uzmanı CEH EĞİTMENİ

SSH Tünelleme ile İçerik Filtreleyicileri Atlatmak

PROGRAMLAMAYA GİRİŞ DERS 2

Bölüm 5 İletim(Transport) Katmanı

TÜRKİYE CUMHURİYETİ ORMAN GENEL MÜDÜRLÜĞÜ DASDIFFUSION DEPARTMENTAL EDITION 1. FAZ TARAMA PC KURULUM KILAVUZU

Erişim Noktası Ayarları

Doğru Adaptor soket kutuplaması.

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

Laboratuvar Çalışması Konak Bilgisayarları Bağlama ve Yapılandırma

MV3 FATURA RADYOLOJİ KULLANIM KILAVUZU

Connection Manager Kullanım Kılavuzu

icono Kullanıcı Kılavuzu

Ağınız üzerinde tarama yapmak için Web Hizmetleri'ni kullanma (Windows Vista SP2 veya üzeri, Windows 7 ve Windows 8)

e-müstahsil Makbuzu Nedir?

Tel : 0(532) Web : E-Posta : info@kayikcioglugrup.com. İLETİ PAKETİ API (Entegrason) Dökümanı

Doküman JETSMS XML Mesaj Đşlemleri Yardım Dokümanı Tarih Sürüm 1.1.0

ETHERNET TEKNOLOJİSİ

FTP ve Güvenlik Duvarları

Ufuk Üniversitesi Bilgi İşlem Merkezi

Siemens Gigaset A580 IP Phone Kurulum ve Kullanım Kılavuzu

SERNET ET232CAS x2 RS232 Seri Kanal Sunucu KULLANICI KILAVUZU. Telif Hakkı Uyarısı. >>> Otomasyon Ürünleri

AKUVOX R29 KAPI ÖNÜ ZİL PANELİ KULLANICI KILAVUZU

Transkript:

BLGM 344 DENEY 3 * AĞ PROGRAMLAMAYA GİRİŞ Amaçlar 1. TCP protokolünün öğrenilmesi 2. Ağ programlamada kullanacağımız sistem komutlarının öğrenilmesi 3. Ağ programlamanın kavranması TCP ile veri alışverişi TCP bağlantı tabanlı bir protokoldür, yani, istemci sunucuya bağlanır ve bu bağlantı sağlandıktan sonra veri transferi başlayabilir. TCP bağlantılarında istemci ve sunucunun gerçekleştireceği adımlar farklıdır. Ağ tabanlı veri transferi yapılabilmesi için öncelikle bir soket açılması (socket()), sonra da bu sokete bir kapı numarası (port number) ve host adresinin (IP address) atanması (bind()) gerekmektedir. İstemcinin yapacağı işlemler sunucuya göre daha basittir. Önceden bahsettiğimiz gibi bir kapı numarasına bağlı bir soket oluşturulması gerekmektedir. Ancak buradaki kapı numarası önemsiz olduğu için işletim sistemine bırakılabilir. Böylece işletim sistemi tarafından bu sokete rastgele bir kapı numarası atanır. Daha sonra bu soket kullanılarak, sunucuya bağlantı sağlanabilir (connect()). Sunucuya bağlanabilmek için sunucunun IP adresini ve kapı numarasını bilmemiz gerekmektedir. Eğer belirtilen adreste istenen kapı numarasını kullanan bir sunucu yoksa, bağlatı çağrısı hata verecektir. Sunucu soketi oluşturduktan sonra bu soketi istemci tarafından da bilinen bir kapı numarasına ve IP adresine bağlar. Sunucu bağlantıları kabul edeceğini dinle çağrısıyla (listen()) belirtir. Bu işlemin ardından istemci sunucuya bağlanabilir, ancak, veri transferinin başlayabilmesi için sunucunun isteği kabul etmesi gerekmektedir (accept()). Kabul etme işlemi başarılı olursa yeni bir soket yaratılarak sunucuyla istemci arasında veri transferinin başlayabilmesini sağlanır. Bağlantı bekleyen soket hala açık ve bağlantı bekleme durumundadır, ve istenirse bir başka istemcinin bağlantı isteği de kabul edilebilir. Aynı anda birden fazla istemciye yanıt vermek için, sunucu birden fazla işlem (fork()) veya iş parçası (pthread) kullanabilir. * BLGM 344 dersi için Bahar 2012/2013 döneminde Gürcü Öz ve Cem Kalyoncu tarafından hazırlanmıştır 1

Sunucu veya istemci, bağlantı sağlandıktan sonra veri gönderebilir (send()) veya alabilir (recv()). Veri transferini veya dinleme işlemini sonlandırmak için kapat (close()) çağrısı kullanılabilir. socket() socket() sistem çağrısında iki parametre ile istenilen soket tipi belirtilir. Internet Protocol için AF_INET, TCP bağlatısı için SOCK_STREAM (akış soketi) kullanılması gerekmektedir. Eğer döndürülen değer negatifse, bir hata çıktığını belirtmektedir. Eğer herhangi bir sorun yoksa bu sistem çağrısı soket tanımlayıcısı döndürür. Örnek: int soket = socket(af_inet, SOCK_STREAM, 0); bind() bind() sistem çağrısı verilen soket tanımlayıcısını verilen yerel adres ve kapı numarasına bağlar. Parametre olarak önce soket tanımlayıcısı, sonra yerel adres tanımlayıcısı (domain, port ve IP adres içerir) ve soket adres tanımlayısıcının boyutunu kabul eder. Soket adres tanımlayıcı olarak sockaddr_in (soket adresi, internet) kullanacağız. Adres veya kapı numarası bizim için önemli değilse INADDR_ANY değerini kullanabiliriz. Çağrı esnasında hata çıkarsa sonuç olarak -1 döndürülür. En sık karşılaşılan hata belirtilen kapının numarasının kullanılıyor olmasıdır. Eğer close() çağrısı kullanılmamışsa, bir program kapandıktan bir süre sonra o programın kullandığı kapı numarası serbest duruma düşer. struct sockaddr_in yerel = {AF_INET, INADDR_ANY, INADDR_ANY}; bind(soket, &yerel, sizeof(sockaddr_in)); connect() connect() sistem çağrısı belirtilen adrese bağlantı sağlar. Yalnızca bağlantı tabanlı iletişim sistemlerinde kullanılır. Sunucunun bilgileri bind() sistem çağrısındaki gibi sockaddr_in veri yapısı kullanılarak sağlanır, ancak, sunucunun bilgileri tam olarak verilmelidir. INADDR_ANY connect() ile kullanılamaz. Çağrı esnasında hata çıkarsa sonuç olarak -1 döndürülür. Genel olarak üç hata karşımıza çıkar: hedef bilgisayarın adı/ip'si yanlış olabilir, belirtilen kapı numarası yanlış ya da bu kapıyı dinleyen bir program olmayabilir, son olarak da bilgisayarın güvenlik duvarı bağlantıya engel olabilir. struct sockaddr_in sunucu = {AF_INET, htons(80), inet_addr("194.27.78.195")}; connect(soket, &sunucu, sizeof(sockaddr_in)); 2

listen() listen() sistem çağırısı verilen soketin bağlantı kabul ettiğini belirtir. İlk parametre soketin kendisi, ikinci ise aynı anda kaç bağlantı isteğinin beklemede olacağını belirtir. Genelde bağlantı isteği geldiğinde kısa süre içerisinde kabul edileceğinden, küçük bir değerin kullanılması herhangi bir sorun yaratmayacaktır. Çağrı esnasında hata çıkarsa sonuç olarak -1 döndürülür. listen(soket, 5); accept() accept() çağrısı gelen bir bağlantı isteğini kabul etmek için kullanılır. Bu çağrı bir bağlantı isteği yoksa bağlantı gelinceye kadar bekler. Bu çağrının kullanılabilmesi için listen() sistem çağrısının bu soket üzerinde çağırılmış olması gerekmektedir. Çağrı esnasında hata çıkarsa sonuç olarak -1 döndürülür. Çağrı başarılı olursa, yeni oluşturduğu soketi geri döndürecektir. İstemciyle bu soketi kullanarak iletişim sağlamanız gerekmektedir. Orijinal soket hala bağlantı beklemeye devam edecektir. Ayrıca accept() çağrısı gelen bağlantı hakkındaki bilgileri de bize sockaddr_in yapısıyla iletir. int uzunluk; struct sockaddr_in istemcibilgisi; int istemci = accept(soket, (struct sockaddr *)&istemcibilgisi, &uzunluk); send() TCP bağlantısı sağlamış olan bir soket kullanılarak karşıdaki bilgisayara veri gönderilebilir. Bu işlem için send() çağrısı kullanılmalıdır. send() çağrısı, kullanılacak olan soketi, gönderilecek veriyi, verinin uzunluğunu ve gönderim ayarlarını parametre olarak alır. Çağrı esnasında hata çıkarsa sonuç olarak -1 döndürülür. Eğer gönderim başarılıysa gönderilen veri miktarını geri döndürür. Gönderilen veri miktarı göndermek istenilen veriden az olabilir. Bu durumda kalan veri bir başka çağrıyla tekrar gönderilmelidir. Örnek: char data[]="merhaba"; int gonderilen = send(soket, data, strlen(data)+1, 0); 3

recv() recv() sistem çağrısı TCP bağlantısı üzerinden veri okumak için kullanılır. Kullanılacak soketi, doldurulacak veri alanını, bu alanın büyüklüğünü ve ayarları parametre olarak alır. Eğer bekleyen veri yoksa bu çağrı veri gelene kadar bekler. Birden fazla send() çağrısıyla gönderilen veriler recv() ile okunurken birleşik de okunabilir. Bu sebepten, okunan verinin birden fazla paket içerip içermediğinin kontrol edilmesi gerekebilir. Çağrı esnasında hata çıkarsa sonuç olarak -1 döndürülür. Eğer çağrı başarılıysa okunan verinin boyutunu verir. Not: gönderilen veride dizgi sonu yoksa, alınan veriye otomatik olarak eklenmez. Bu yüzden gerektiği durumlarda okunan verinin sonuna '\0' karakterini yerleştirmeniz gerekebilir. char buf[1024]; int alinan = recv(soket, buf, 1024, 0); close() Açılan bir soket bağlantısı close() kullanarak kapatılabilir. Parametre olarak soket tanımlayıcısını alır. Deney Bu deneyde basit bir istemci yazmanız istenmektedir. Bu istemci 194.27.78.195 IP adresinde bulunan 1500 numaralı kapı üzerinde çalışan sunucuya bağlanmalı, daha sonra sunucunun gönderdiği veriyi ekrana yazmalıdır. Bunun ardından kullanıcıdan bir yazı okuyarak bunu sunucuya geri göndermelidir. Daha sonra da sunucudan gelen veriyi göstererek soketi kapatıp çıkmalıdır. Aşağıda gerçekleştirilmesi gereken adımlar listelenmiştir: 1. Soket oluştur (socket()) ve yerel bağlantısını yap (bind()) 2. Sunucuya bağlan (connect()) 3. Sunucuya bağlandı., mesajını yazdır (printf() 4. Sunucudan veri oku (recv()) 5. Okunan veriyi ekrana yaz (printf()) 6. Kullanıcıdan veri oku (scanf()) 7. Kullanıcıdan okunan veriyi sunucuya gönder (send()) 8. Sunucudan gelen veriyi oku (recv()) 9. Bağlantıyı kapat (close()) ve çık (return) Yazdığınız bu istemciyi birkaç kere deneyiniz. 4

Sorular 1. Bir soket bağlantısı hangi verilerle ayırt edilir? İpucu: 5 adet veri kullanılmaktadır. 2. Hangi sistem çağrıları hem sunucu hem de istemci tarafından kullanılabilir? 3. connect() sistem çağrısı hangi tip soketlerde kullanılabilir? 4. Bir sunucu aynı anda birden fazla istemciye yanıt verebilir mi? 5. İstemcinin kullandığı connect() çağrısına karşılık sunucunun çağırmış olduğu accept() çağrısı sayesinde bağlantı sağlanır. Bu iki sistem çağrısı arasında, birinin sunucu birinin ise istemci tarafında çalışması haricindeki, en önemli fark nedir? 6. sockaddr_in veri yapısında in ne anlama gelmektedir? 7. INADDR_ANY hangi durumda ne anlama gelmektedir? 5