İşletim Sistemleri. Dr. Binnur Kurt Omega Eğitim ve Danışmanlık İşletim Sistemleri

Ebat: px
Şu sayfadan göstermeyi başlat:

Download "İşletim Sistemleri. Dr. Binnur Kurt Omega Eğitim ve Danışmanlık İşletim Sistemleri"

Transkript

1 İşletim Sistemleri Dr. Binnur Kurt Omega Eğitim ve Danışmanlık 1 S a y f a

2 İÇİNDEKİLER 1. İşletim Sistemi 2. Kabuk 3. Prosesler 4. İplikler 5. İplikler Arası Eş Zamanlama 6. Prosesler Arası İletişim 7. İş Sıralama 8. Prosesler Arası Eş zamanlama 9. Bellek Yönetimi 10. Dosya Sistemi S a y f a

3 BÖLÜM 11 Bölümün Amacı Bölüm sonunda aşağıdaki konular öğrenilmiş olacaktır: İstemci-Sunucu Modeli Soket Programlama o C ile Unix Soket Programlama o Java ile Soket Programlama o C++ da ASIO ile Soket Programlama 3 S a y f a

4 11.1 Giriş İstemci-sunucu mimarisi, bilgisayar ağı ile birbirine bağlı iki yazılımın biri birinden hizmet almasını amaçlar. Bu programlardan sunucu yazılım hizmet verirken, istemci yazılım ise hizmet alan taraftır. Sunucunun verdiği hizmet, zamanı söylemek kadar basit olabileceği gibi dosya aktarımı ya da e-posta göndermek gibi daha karmaşık servisler de olabilir. İstemcinin bu hizmetleri alabilmesi için önce sunucu ile bağlantı kurması ve daha sonra bağlantıyı kullanarak servise erişmesi gerekir. Soket, bilgisayar ağı üzerinden bu bağlantının kurulması ve servise ulaşılması için gerekli olan yazılım alt yapısını sunar. Soket, işletim sistemlerince desteklenen, farklı programlama dillerinden uzaktan ulaşabileceğimiz bir yazılım erişim noktasıdır. Soket programlama modeli istemci-sunucu mimarisi ile uyumludur İstemci-Sunucu Modeli Sunucu ve istemci tarafta kavramsal olarak hangi işlemlerin gerçekleştirildiğine bir bakalım: Sunucu tarafta Soket haberleşmenin adımları: 1. Servisi duyur 2. Bağlantı için bekle 3. Bağlanan istemci için servis yap 4. İstemci ile bağlantıyı kopar 5. İkinci adıma geri dön İstemci tarafta Soket haberleşmenin adımları: 1. Servisin sunucusunu bul 2. Sunucu ile bağlantı kur 3. Servis için istek gönder 4. Sunucuya ile olan bağlantıyı kopar İstemci taraftaki en önemli fark, sunucu taraftakine benzer bir döngünün bulunmamasıdır. Şimdi farklı platformlarda ve farklı programlama dilleri kullanarak soket programlamanın detaylarını ve yukarıda verilen istemci sunucu modelinin nasıl gerçeklendiğini çalışacağız. Önce Unix işletim sisteminde C programlama dili kullanarak soket programlama yapacağız. Daha sonra Java'daki ve C++'daki çözümleri inceleyeceğiz Unix'de Soket Programlama Unix'de soket haberleşme aynı makinada çalışan yazılımlar arasında yerel olarak gerçekleştirilebileceği gibi bilgisayar ağı ile biri birine bağlı farklı makinalardaki yazılımlar arasında da gerçekleştirilebilir: AF_UNIX Hafif sıklet bir haberleşme sağlar. Haberleşme aynı makinada çalışan iki yazılım arasında yerel olarak dosya sistemi üzerinden gerçekleşeceği için veri kaybı ve paketlerin yeniden sıralanması gibi durumlar oluşmaz. Bu nedenle haberleşme başarımı 4 S a y f a

5 yüksektir. Örneğin, Unix platformunda MySQL sunucusu ile haberleşmede bu yöntem kullanılabilinir: mysql --socket=/tmp/mysql.sock AF_INET Internet adresler kullanılarak farklı makinalardaki yazılımların haberleşmesi gerekiyor ise bu soket türü tercih edilmelidir. İstenirse aynı makinadaki yazılımlar da biri biriyle bu soket türünü kullanarak haberleşebilirler. Bu nedenle bu yazıda özellikle bu tür soketleri inceleyeceğiz. İster AF_UNIX soket kullanmış olun isterse de AF_INET soket kullanmış olun, istemci ile sunucu arasındaki iletişim protokolü son derece yalındır: Şekil-11.1 İstemci sunucu mimarisinde soket programlamada istemci ile sunucu arasındaki çağrılar ve sıralaması Sunucu bağlantı kuran istemciden kaç Sayısal Loto kuponu oynamak istediğini tam sayı olarak okur ve daha sonra bu sayı kadar 1-49 aralığında biri birinden 5 S a y f a

6 farklı ve sıralı altı tane sayı oluşturur ve istemciye gönderir. Bunu önce AF_UNIX soket kullanarak kodlayalım: Kod Listesi 11.1: AF_UNIX soket Sunucu kaynak kodu #include <stdio.h> #include <sys/types.h> #include <sys/socket.h> #include <sys/un.h> #include <time.h> #include <stdlib.h> #include <fcntl.h> int compare_ints(const void * elem1, const void * elem2){ int f = *((int*)elem1); int s = *((int*)elem2); if (f > s) return 1; if (f < s) return -1; return 0; int find(int element,int *array,int length){ int i; for (i=0;i<length;++i){ if (element == array[i]) return i; return -1; int populatelottery(char *buffer){ int i,k=0,candidate,numbers[6]={50,50,50,50,50,50; numbers[0]= rand() % ; for (i=1;i<6;++i){ do { candidate= rand() % ; while(find(candidate,numbers,6)>=0); numbers[i]= candidate; qsort(numbers,6,sizeof(int),compare_ints); for (i=0;i<6;++i){ if (i<5) k += sprintf(buffer+k,"%d,",numbers[i]); else k += sprintf(buffer+k,"%d\n",numbers[i]); return k; void service(int connection){ static int buffer_size,num,i; char *buffer= malloc(18*sizeof(char)); read(connection,&num,sizeof(num),0); for (i=0;i<num;++i){ buffer_size= populatelottery(buffer); write( connection, buffer, buffer_size,0); close(connection); 6 S a y f a

7 free(buffer); int main() { int sd,i,comm; struct sockaddr_un myname, client; int namesize = sizeof(struct sockaddr_un); int clientsize = sizeof(struct sockaddr_un); srand(time(0l)); /* Create server's rendezvous socket sd */ if( (sd = socket(af_unix, SOCK_STREAM, 0)) == -1) { perror("srvr1.c:main:socket"); /* Fill in server's address and bind it to sd */ myname.sun_family = AF_UNIX; strcpy(myname.sun_path, "/tmp/socket1"); unlink( myname.sun_path ); if( bind(sd, (struct sockaddr*)&myname, namesize) == -1 ) { perror("main:bind"); /* Prepare to receive multiple connect requests */ if( listen(sd, 128) == -1 ) { perror("main:listen"); /* Infinite loop to accept client requests */ while(1) { comm = accept(sd, (struct sockaddr*)&client, &clientsize); if ( comm == -1) { perror("main:accept"); service(comm); return 0; accept() çağrısı bağlantı kurulana kadar sunucu kodunu bloke eder. accept() çağrısı soketi tanımlayan kimlik numarası ile döner. Bu bir tekil tam sayısı değerdir. Bu kimlik değeri write() ve read() çağrılarında okuma ve yazma yapılacak kaynağın kimliği olarak birinci parametrenin değeri olarak kullanılır. Unix soketi aynı makinadaki iki proses arasındaki veri haberleşmesi için bilgisayar ağını değil, dosya sistemini kullanır. Soket haberleşme için kullanılan dosyanın türü soket olarak dosya sisteminden izlenebilir: srwx---r-x 1 bkurt bkurt 0 Jan 2 16:30 lottery.socket 7 S a y f a

8 Kod Listesi 11.2: AF_UNIX soket İstemci kaynak kodu #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sys/socket.h> #include <sys/un.h> #include <fcntl.h> int main(int argc,char *argv[]) { int namesize = sizeof(struct sockaddr_un); int sd,i,sz,num; struct sockaddr_un srvr; char *buffer= (char *) malloc(18*sizeof(char)); /* Create client's socket sd */ if ((sd = socket(af_unix, SOCK_STREAM, 0)) == -1) { perror("main:socket"); /* Fill in server's address and connect to server */ srvr.sun_family = AF_UNIX; strcpy(srvr.sun_path, "/tmp/socket1"); if( connect(sd, (struct sockaddr*)&srvr, namesize) == -1 ) { perror("main:connect"); /* Communicate with server */ num = atoi(argv[1]); write(sd,&num,sizeof(num),0); for (i=0;i<num;++i){ do { sz= read (sd, buffer, sizeof(18*sizeof(char)),0); buffer[sz]='\0'; printf("%s",buffer); while(sz>0); printf("\n"); close(sd); return 0; Aynı problemi bu kez AF_INET soket kullanarak kodlamaya çalışalım. Şekil-11.1 ile verilen akışta bir değişiklik olmayacak. Farklılığın sunucuyu tanımlama yöntemi ile ilgili olduğuna dikkat edin. Artık iletişim bilgisayar ağı ile bağlı iki makine arasında gerçekleşiyor. IP adresi ya da DNS adı kullanarak sunucuyu ayırt etmeye çalışacağız. Bu amaçla gethostbyname() çağrısı kullanılır. socket() çağrısı ile ip adresi ile erilen ara yüz için soket yaratılır. Daha sonra bu soket üzerinden verilen bir port numarası üzerinden gelen istekleri dinlemek üzere bind() çağrısı ile uygulamanın porta ile bağı kurulur. Port 16 bitlik bir tam sayıdır. Bağ kurulan port numarasının kullanılmayan port numaralarından seçilmelidir. İlk 1024 port numarası sistem 8 S a y f a

9 tarafından kullanılmıştır. Uygulamaların 1024 den sonraki port numaralarından kullanmaları istenir. Sistemdeki hangi port numaralarının kullanımda olduğu netstat komutu kullanılarak öğrenilebilir: $ netstat -a Active Connections Proto Local Address Foreign Address State TCP :135 server1.example.com:0 LISTENING TCP :445 server1.example.com:0 LISTENING TCP :1536 server1.example.com:0 LISTENING TCP :1537 server1.example.com:0 LISTENING TCP :1538 server1.example.com:0 LISTENING TCP :1539 server1.example.com:0 LISTENING TCP :1541 server1.example.com:0 LISTENING TCP :1543 server1.example.com:0 LISTENING TCP :1556 server1.example.com:0 LISTENING TCP :2869 server1.example.com:0 LISTENING TCP :3306 server1.example.com:0 LISTENING TCP :5357 server1.example.com:0 LISTENING TCP :47497 server1.example.com:0 LISTENING TCP :1583 server1.example.com:0 LISTENING TCP :10000 server1.example.com:0 LISTENING TCP :27275 server1.example.com:0 LISTENING TCP :64122 server1.example.com:0 LISTENING TCP :139 server1.example.com:0 LISTENING TCP :139 server1.example.com:0 LISTENING TCP :139 server1.example.com:0 LISTENING TCP [::]:135 server1.example.com:0 LISTENING TCP [::]:445 server1.example.com:0 LISTENING TCP [::]:1536 server1.example.com:0 LISTENING TCP [::]:1537 server1.example.com:0 LISTENING TCP [::]:1538 server1.example.com:0 LISTENING TCP [::]:1539 server1.example.com:0 LISTENING TCP [::]:1541 server1.example.com:0 LISTENING TCP [::]:1543 server1.example.com:0 LISTENING TCP [::]:1556 server1.example.com:0 LISTENING TCP [::]:2869 server1.example.com:0 LISTENING TCP [::]:3306 server1.example.com:0 LISTENING TCP [::]:5357 server1.example.com:0 LISTENING TCP [::]:47497 server1.example.com:0 LISTENING TCP [::1]:1540 server1.example.com:0 LISTENING TCP [::1]:27275 server1.example.com:0 LISTENING UDP :68 *:* UDP :123 *:* UDP :500 *:* UDP :1900 *:* UDP :3702 *:* UDP :3702 *:* UDP :4500 *:* UDP :5353 *:* UDP :5355 *:* UDP :6771 *:* UDP :47497 *:* UDP :56723 *:* UDP :1900 *:* UDP :49335 *:* UDP :59989 *:* UDP :137 *:* UDP :138 *:* UDP :1900 *:* UDP :2177 *:* UDP :49332 *:* UDP :59986 *:* UDP :137 *:* UDP :138 *:* UDP :1900 *:* UDP :2177 *:* UDP :49333 *:* UDP :59987 *:* UDP :137 *:* UDP :138 *:* UDP :1900 *:* UDP :2177 *:* UDP :49334 *:* 9 S a y f a

10 UDP :59988 *:* UDP [::]:123 *:* UDP [::]:500 *:* UDP [::]:3702 *:* UDP [::]:3702 *:* UDP [::]:4500 *:* UDP [::]:5353 *:* UDP [::]:5355 *:* UDP [::]:47497 *:* UDP [::]:56724 *:* UDP [::1]:1900 *:* UDP [::1]:49331 *:* Önce sunucu kodunu inceleyelim: Kod Listesi 11.3: AF_INET soket Sunucu kaynak kodu #include <stdio.h> #include <stdlib.h> #include <time.h> #include <fcntl.h> #include <sys/types.h> #include <sys/socket.h> #include <sys/utsname.h> #include <netdb.h> #include <netinet/in.h> #include <errno.h> #define PORTNUM 2016 int compare_ints(const void * elem1, const void * elem2){ int f = *((int*)elem1); int s = *((int*)elem2); if (f > s) return 1; if (f < s) return -1; return 0; int find(int element,int *array,int length){ int i; for (i=0;i<length;++i){ if (element == array[i]) return i; return -1; void service(int connection){ static int buffer_size,num,i; char *buffer= malloc(18*sizeof(char)); read(connection,&num,sizeof(num),0); for (i=0;i<num;++i){ buffer_size= populatelottery(buffer); write( connection, buffer, buffer_size,0); close(connection); free(buffer); 10 S a y f a

11 int populatelottery(char *buffer){ int i,k=0,candidate,numbers[6]={50,50,50,50,50,50; numbers[0]= rand() % ; for (i=1;i<6;++i){ do { candidate= rand() % ; while(find(candidate,numbers,6)>=0); numbers[i]= candidate; qsort(numbers,6,sizeof(int),compare_ints); for (i=0;i<6;++i){ if (i<5) k += sprintf(buffer+k,"%d,",numbers[i]); else k += sprintf(buffer+k,"%d\n",numbers[i]); return k; int main() { struct utsname name; struct sockaddr_in socketname, client; int sd, ns, clientlen = sizeof(client); struct hostent *host; time_t today; /* determine server system name and internet address */ if (uname(&name) == -1) { perror("uname"); if ((host = gethostbyname(name.nodename)) == NULL) { perror("gethostbyname"); /* fill in socket address structure */ memset((char *) &socketname, '\0', sizeof(socketname)); socketname.sin_family = AF_INET; socketname.sin_port = PORTNUM; memcpy( (char *) &socketname.sin_addr, host->h_addr, host->h_length ); /* open socket */ if ((sd = socket(af_inet, SOCK_STREAM, 0)) == -1) { 11 S a y f a

12 perror("socket"); /* bind socket to a name */ if (bind(sd, (struct sockaddr *) & socketname, sizeof(socketname)) ) { perror("bind"); /* prepare to receive multiple connect requests */ if (listen(sd, 128)) { perror("listen"); while (1) { if ((ns = accept(sd, (struct sockaddr *)&client, &clientlen)) == -1) { perror("accept"); service(ns); İstemci kodunu aşağıda izleyebilirsiniz: Kod Listesi 11.4: AF_UNIX soket İstemci kodu #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sys/socket.h> #include <sys/utsname.h> #include <netdb.h> #include <netinet/in.h> #include <errno.h> #include <time.h> #include <fcntl.h> #define PORTNUM 2016 int main(int argc,char *argv[]) { int sd,i,sz,num; char *buffer= (char *) malloc(18*sizeof(char)); struct sockaddr_in server; struct hostent *host; time_t srvrtime; struct utsname name; 12 S a y f a

13 /* create the socket for talking to server*/ if ((sd = socket(af_inet, SOCK_STREAM, 0)) == -1) { perror("socket"); /* get server internet address and put into addr * structure fill in the socket address structure * and connect to server */ memset((char *) &server, '\0', sizeof(server)); server.sin_family = AF_INET; server.sin_port = PORTNUM; /* Server is local system. Get its name. */ if (uname(&name) == -1) { perror("uname"); exit (1); if ((host = gethostbyname(name.nodename)) == NULL) { perror("gethostbyname"); memcpy((char *)&server.sin_addr,host->h_addr,host->h_length); /* connect to server */ if( connect(sd, (struct sockaddr *)&server, sizeof(server))) { perror("connect"); /* Communicate with server */ num = atoi(argv[1]); write(sd,&num,sizeof(num),0); for (i=0;i<num;++i){ do { sz= read (sd, buffer, sizeof(18*sizeof(char)),0); buffer[sz]='\0'; printf("%s",buffer); while(sz>0); printf("\n"); close(sd); return 0; 11.4 Java'da Soket Programlama Java'da soket programlama için iki temel sınıf bulunuyor: Sunucu tarafta ServerSocket sınıfı ve İstemci tarafta Socket sınıfı. Java da da soket sınıfları Şekil-11.1 de verilen akışa uygun olarak davranırlar. ServerSocket sınıfının accept() çağrısı, bağlantı kurulana kadar uygulamanın bloke olmasına neden olur, bağlantı 13 S a y f a

14 kurulduğunda ise accept() çağrısı Socket nesnesi ile döner. İletişim bu nesnenin java.io paketinde yer alan giriş/çıkış sınıfları olan Reader, Writer, InputStream, OutputStream kullanılarak gerçekleştirilir. Kod Listesi 11.5: Java da soket Sunucu kodu package com.example; import java.io.outputstreamwriter; import java.io.writer; import java.net.serversocket; import java.net.socket; import java.util.list; import java.util.random; import java.util.stream.collectors; /** * Binnur Kurt (binnur.kurt@gmail.com) */ public class Server1 { private static final int PORT= 2016; public static void main(string[] args) throws Exception { ServerSocket serversocket = new ServerSocket(PORT); System.out.println("Server is running at port " + PORT); while (true) { try ( Socket socket = serversocket.accept(); Writer writer = new OutputStreamWriter( socket.getoutputstream() ); ) { final List<Integer> numbers = new Random().ints(1, 50).distinct().limit(6).sorted().boxed().collect(Collectors.toList()); writer.write(numbers.tostring()); İstemcinin herhangi bir sorumluluğu olmadı için istemci taraftaki kod daha da basittir. Kodun basit olmasını biraz Java 7 ile birlikte gelen AutoCloseable kaynakların otomatik olarak finally bloğuna ihtiyaç duymadan otomatik olarak kod yazmadan kapatılmasını sağlayan yeniliğe borçludur. 14 S a y f a

15 Kod Listesi 11.6: Java da soket İstemci kodu package com.example; import java.io.bufferedreader; import java.io.inputstreamreader; import java.net.socket; /** * Binnur Kurt (binnur.kurt@gmail.com) */ public class Client1 { public static void main(string[] args) throws Exception { try (Socket socket = new Socket(" ", 2016)) { BufferedReader reader = new BufferedReader( new InputStreamReader(socket.getInputStream()) ); System.out.println("Numbers: " + reader.readline()); Ancak bu sunucunun bir problemi var: Belirli bir anda sadece tek bir istemciye cevap verebilir. Şimdi sunucuyu bir anda birden fazla istemciye hizmet verebilir hale getirelim. Bunun için sunucu tarafta her bir bağlantı için bu bağlantıdan gelen istekleri karşılayacak bir ipliğe soket atanır. Bu durumda uygulamanın mimarisi Şekil deki yapıya sahip olacaktır. Burada iplikleri kontrol edebilmek için iplik havuzu kullanmak uygun olur. Bunu Java daki Executors yardımcı sınıfını kullanarak kılaylıkla gerçekleştirebiliriz. Sabit sayılı iplik havuzu (Executors.newFixedThreadPool()) ya da saklamalı iplik havuzu (Executors.newCachedThreadPool()) kullanılabilir. Sabit iplik havuzunda, havuzdaki iplik sayısı sabittir. Örneğin havuzdaki iplik sayısı 50 olsun. Bu durumda, aynı anda 50 tane bağlantıdan gelen istekler karşılanabilir. 50 den sonraki istekler ise iplik havuzunun kuyruğunda bekleyecektir. Saklamalı iplik havuzunda ise her gelen istek için havuzda boşta iplik yoksa yeni bir tane iplik yaratılır ve isteği yaratılan iplik karşılar. İplik işi bitince havuza geri döner, belirli bir süre (1 dakika) yeni bir iş gelmezse sonlanır. Havuzdaki iplik sayısı değişkendir. Daha çok parlama türünde (burst mode) çalışma şekline uygundur. Şekil-11.2 Çok iplikli sunucu mimarisi 15 S a y f a

16 Kod Listesi 11.7: Çok İplikli İstemci çözümü package com.example; import java.io.outputstreamwriter; import java.io.writer; import java.net.serversocket; import java.net.socket; import java.util.list; import java.util.random; import java.util.concurrent.executorservice; import java.util.concurrent.executors; import java.util.concurrent.scheduledexecutorservice; import java.util.concurrent.timeunit; import java.util.concurrent.atomic.atomiclong; import java.util.stream.collectors; /** * Binnur Kurt (binnur.kurt@gmail.com) */ public class Server1MT { private static final int PORT= 2016; static AtomicLong served= new AtomicLong(); public static void main(string[] args) throws Exception { ServerSocket serversocket = new ServerSocket(PORT); System.out.println("Server is running at port " + PORT); ExecutorService es= Executors.newCachedThreadPool(); ScheduledExecutorService ses= Executors.newSingleThreadScheduledExecutor(); ses.scheduleatfixedrate(() -> System.out.println(served), 0, 10,TimeUnit.SECONDS); while (true) { es.submit(new Service(serverSocket.accept())); class Service implements Runnable { private final Socket socket; public Service(Socket socket) { this.socket = public void run() { try ( Socket socket=this.socket; Writer writer= new OutputStreamWriter( socket.getoutputstream() ); ){ List<Integer> numbers = new Random().ints(1, 50).distinct().limit(6) 16 S a y f a

17 .sorted().boxed().collect(collectors.tolist()); writer.write(numbers.tostring()); Server1MT.served.incrementAndGet(); catch(exception e){ İplik havuzu kullanarak problemi çözmüş gibiyiz. CachedThreadPool yerine FixedThreadPool da kullanılabilir. Ama hala bir problemimiz var. Bilgisayar ağının hızı işlemcinin hızı ile karşılaştırıldığında yavaştır. Biz her ipliğe bir istemciyi atayarak hizmet veriyoruz. Her istemci için bir iplik kullanılıyor. Aralarında bire bir eşleme kurduk. Ancak bir iplik aynı anda birden fazla istemciye hizmet verebilir. Bunun için NIO ile gelen Channel, Tıkamasız (Non-blocking) Soket ve Selector yapılarını kullanarak problemin çözümünü yeniden kodlayacağız. Kodlanacak çözümün mimarisi Şekil-11.3 de verilmiştir. Şekil-11.3 Tek iplikli, tıkamasız soketlerin kullanıldığı sunucu mimarisi 17 S a y f a

18 Kod Listesi 11.8: Tek İplikli Soket kullanan İstemci çözümü package com.example; import java.net.inetsocketaddress; import java.nio.channels.selectablechannel; import java.nio.channels.selectionkey; import java.nio.channels.selector; import java.nio.channels.serversocketchannel; import java.nio.channels.socketchannel; import java.nio.charset.charset; import java.util.iterator; import java.util.list; import java.util.random; import java.util.concurrent.executors; import java.util.concurrent.scheduledexecutorservice; import java.util.concurrent.timeunit; import java.util.concurrent.atomic.atomiclong; import java.util.stream.collectors; /** * Binnur Kurt (binnur.kurt@gmail.com) */ public class Server2 { private static final int PORT = 2016; static AtomicLong served = new AtomicLong(); public static void main(string[] args) throws Exception { ScheduledExecutorService ses = Executors.newSingleThreadScheduledExecutor(); ses.scheduleatfixedrate(() -> System.err.println(served), 0, 5, TimeUnit.SECONDS); Selector selector = Selector.open(); ServerSocketChannel serversocketchannel = ServerSocketChannel.open(); serversocketchannel.configureblocking(false); serversocketchannel.socket().bind( new InetSocketAddress(PORT)); serversocketchannel.register(selector, SelectionKey.OP_ACCEPT); System.out.println("Server is running at port " + PORT); while (true) { selector.select(); for (Iterator<SelectionKey> it = selector.selectedkeys().iterator(); it.hasnext();) { SelectionKey sk = it.next(); SelectableChannel sc = sk.channel(); if (sc instanceof ServerSocketChannel) { SocketChannel clientsocketchannel = ((ServerSocketChannel) sk.channel()).accept(); if (clientsocketchannel!= null) { clientsocketchannel.configureblocking(false); clientsocketchannel.register(selector, 18 S a y f a

19 SelectionKey.OP_WRITE); else if (sc instanceof SocketChannel) { SocketChannel clientsocketchannel = (SocketChannel) sk.channel(); final List<Integer> numbers = new Random().ints(1, 50).distinct().limit(6).sorted().boxed().collect(Collectors.toList()); clientsocketchannel.write( Charset.defaultCharset().encode(numbers.toString()) ); Server2.served.incrementAndGet(); clientsocketchannel.close(); it.remove(); Java 7 de daha önce Selector kullanarak elde ettiğimiz çözüm yerine, olay temelli haberleşme yapabilmemizi sağlayan daha basit programlama modeli sunan AsynchronousServerSocketChannel sınıfı geldi. Aynı problemi bu kez Asenkron Soket kullanarak tekrar çözeceğiz (Kod Listesi-11.9). 19 S a y f a

20 Kod Listesi 11.9: Olay tabanlı Soket haberleşme çözümü: AsynchronousServerSocketChannel package com.example; import java.io.ioexception; import java.net.inetsocketaddress; import java.nio.channels.asynchronouschannelgroup; import java.nio.channels.asynchronousserversocketchannel; import java.nio.channels.asynchronoussocketchannel; import java.nio.channels.completionhandler; import java.nio.charset.charset; import java.util.list; import java.util.random; import java.util.concurrent.executors; import java.util.concurrent.timeunit; import java.util.logging.level; import java.util.logging.logger; import java.util.stream.collectors; /** * Binnur Kurt (binnur.kurt@gmail.com) */ public class Server3 { private static final int PORT= 2016; public static void main(string[] args) throws Exception { AsynchronousChannelGroup group = AsynchronousChannelGroup.withThreadPool(Executors.newSingleThreadExecutor()); AsynchronousServerSocketChannel listener= AsynchronousServerSocketChannel.open().bind(new InetSocketAddress(PORT)); listener.accept(null, new public void completed(asynchronoussocketchannel channel, Void attachment) { try { listener.accept( null, this ); final List<Integer> numbers = new Random().ints(1, 50).distinct().limit(6).sorted().boxed().collect(Collectors.toList()); channel.write( Charset.defaultCharset().encode(numbers.toString()) ); if(channel.isopen()) channel.close(); catch (IOException ex) { Logger.getLogger(Server3.class.getName()) 20 S a y f a

21 .log(level.severe, null, public void failed(throwable exc, Void attachment) { ); System.out.println("Server is running at port " + PORT); group.awaittermination(long.max_value, TimeUnit.DAYS); Eğer Java platformunda yüksek başarımlı Soket programlama yapmak istiyorsanız, Java SE 7 ile gelen bu çözümü tercih etmelisiniz C++'da Soket Programlama C++11'de ve C++14'de soket programlama ile ilgili hazır bir çözüm yok. Ancak Boost.Asio kütüphanesini kullanarak soket programlama yapabiliriz. Yukarıda Java platformunda kodladığımız sunucu ve istemciyi şimdi Boost.Asio ile kodlayalım: Kod Listesi C++ da Boost.Asio kütüphanesi ile yazılan sunucu #include <cstdlib> #include <iostream> #include <memory> #include <random> #include <algorithm> #include <utility> #include <string> #include <sstream> #include <boost/asio.hpp> using namespace std; using boost::asio::ip::tcp; namespace std { template < typename T > std::string to_string( const T& n ) { std::ostringstream stm ; stm << n ; return stm.str() ; class session : public std::enable_shared_from_this<session> { public: session(tcp::socket socket) : socket_(move(socket)),mt(rd()),dist(1, 49) { void start() { generatelotterynumbers(); do_write(); 21 S a y f a

22 private: void generatelotterynumbers(){ numbers.empty(); while (numbers.size()<6){ int candidate= dist(mt); if (find(numbers.begin(),numbers.end(),candidate)==numbers.end()) numbers.push_back(candidate); sort(numbers.begin(),numbers.end()); _buffer.empty(); for (auto x: numbers){ _buffer.append(std::to_string(x)).append(","); _buffer.erase(_buffer.begin()+_buffer.size()-1); _buffer.append("\n"); void do_write(){ auto self(shared_from_this()); boost::asio::async_write(socket_, boost::asio::buffer(_buffer.c_str(), _buffer.size()), [this, self](boost::system::error_code ec, std::size_t){ ); tcp::socket socket_; enum { max_length = 1024 ; char data_[max_length]; string _buffer; random_device rd; mt19937 mt; uniform_int_distribution<int> dist; vector<int> numbers; ; class server { public: server(boost::asio::io_service& io_service, short port) : acceptor_(io_service, tcp::endpoint(tcp::v4(), port)), socket_(io_service) { do_accept(); private: void do_accept() { acceptor_.async_accept(socket_, [this](boost::system::error_code ec) { if (!ec) { std::make_shared<session>(std::move(socket_))->start(); do_accept(); ); tcp::acceptor acceptor_; 22 S a y f a

23 tcp::socket socket_; ; int main(int argc, char* argv[]){ if (argc!= 2) { std::cerr << "Usage: lottery_server <port>\n"; return 1; try { boost::asio::io_service io_service; server s(io_service, std::atoi(argv[1])); io_service.run(); catch (std::exception& e){ std::cerr << "Exception: " << e.what() << endl; return 0; Şimdi istemciyi Boost.Asio kullanarak kodlayalım: Kod Listesi C++ da Boost.Asio kütüphanesi ile yazılan istemci #include <iostream> #include <boost/array.hpp> #include <boost/asio.hpp> using boost::asio::ip::tcp; int main(int argc, char* argv[]) { if (argc!= 2) { std::cerr << "Usage: lottert_client <host>" << std::endl; return 1; try { boost::asio::io_service io_service; tcp::resolver resolver(io_service); tcp::resolver::query query(argv[1]); tcp::resolver::iterator endpoint_iterator = resolver.resolve(query); tcp::socket socket(io_service); boost::asio::connect(socket, endpoint_iterator); while (true){ boost::array<char, 128> buf; boost::system::error_code error; size_t len=socket.read_some(boost::asio::buffer(buf), error); if (error == boost::asio::error::eof) break; // Connection closed cleanly by peer. else if (error) throw boost::system::system_error(error); cout.write(buf.data(), len); catch (std::exception& e) { cerr << e.what() << endl; return 0; 23 S a y f a

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

Soket IPC (bağlantı doğrultusunda olan istemci and sunucu operasyonları) Sunucu. İstemci. socket() Bir soket yarat. bind() Soket IPC (bağlantı doğrultusunda olan istemci and sunucu operasyonları) Sunucu Bir soket yarat Sokete iyi bilinen bir port numarası bağla Bağlantılar için bir dinleme kuyruğu oluştur Bir bağlantıyı kabul

Detaylı

İşletim Sistemleri. Dr. Binnur Kurt Omega Eğitim ve Danışmanlık İşletim Sistemleri

İşletim Sistemleri. Dr. Binnur Kurt Omega Eğitim ve Danışmanlık  İşletim Sistemleri İşletim Sistemleri Dr. Binnur Kurt binnur.kurt@gmail.com Omega Eğitim ve Danışmanlık http://www.omegaegitim.com 1 S a y f a İÇİNDEKİLER 1. İşletim Sistemi 2. Kabuk 3. Prosesler 4. İplikler 5. İplikler

Detaylı

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

BLGM 344 DENEY 3 * AĞ PROGRAMLAMAYA GİRİŞ 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

Detaylı

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

Bir port aynı anda bir process tarafından dinlenebilir. Fakat bir process birden fazla portu dinleyebilir. Port Nedir? Bir network cihazından diğerine veri gönderilirken hedef cihazın bu veri ile ilgili ne yapacağına dair bir bilgi göndermeye bir yol sağlanmamıştır. TCP ve UDP bu soruna port adı verilen bir

Detaylı

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

BLGM 343 DENEY 8 * TCP İLE VERİ İLETİŞİMİ BLGM 343 DENEY 8 * TCP İLE VERİ İLETİŞİMİ 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

Detaylı

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

BMS-302 İleri Web Programlama. İş Parçacığı (Thread) ve Soket (Socket) Programlama BMS-302 İleri Web Programlama İş Parçacığı (Thread) ve Soket (Socket) Programlama İş Parçacıkları (Threads) Ana programa paralel çalışan işler oluşturmak için kullanılır Makine birden fazla çekirdeğe sahipse

Detaylı

// hataları işaret eden referans

// hataları işaret eden referans System sınıfı java.lang.object java.lang.system public final class System extends Object System sınıfı, java.lang paketi içindedir. Platformdan bağımsız olarak sistem düzeyindeki eylemleri belirleyen dingin

Detaylı

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

Görsel Programlama DERS 12. Görsel Programlama - Ders12/ Görsel Programlama DERS 12 1 Java Ağ İşlemleri (Java Networking) Birbirleri ile ağ araçları ve kabloları ile bağlantılı bilgisayarlar bir ağ sistemi oluştururlar. İnternet, şirketlerin yerel bilgisayar

Detaylı

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

Ayni sistem(host) üzerinde IPC. Ağ(network) aracılığı ile IPC Ayni sistem(host) üzerinde IPC Prosesler Host P 1 P 2 P 3 IPC mekanizması OS kernel Ağ(network) aracılığı ile IPC Host A Host B Host C P 1 P 2 P 3 Ağ(Network) 1 Temel TCP/IP protokolleri OSI katmanları(layers)

Detaylı

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.

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. 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ı

Detaylı

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

Ağ Altyapısı ve Dağıtılmış İşlem Ağ Altyapısı ve Dağıtılmış İşlem Ahmet Burak Can Hacettepe Üniversitesi abc@cs.hacettepe.edu.tr Dağıtılmış İşlem Bilgisayar ağlarında dağıtılmış işlem temel olarak iki bağlamda düşünülür: Ağ düzeyi Birlikte

Detaylı

C++ Giriş Ders 1 MSGSU Fizik Bölümü Ferhat ÖZOK Kullanılacak kaynak: Published by Juan Soulié

C++ Giriş Ders 1 MSGSU Fizik Bölümü Ferhat ÖZOK Kullanılacak kaynak:  Published by Juan Soulié Kullanılacak kaynak: http://www.cplusplus.com/doc/tutorial/ Published by Juan Soulié C++ Nedir? Arttırılmış C demektir ve C dilinin geliştirilmiş halini yansıtır. C++ öğrenmeden önce herhangi bir programlama

Detaylı

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ş. 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ş Kaynak : Douglas E. Comer, Computer Networks and Internets With Internet Applications, 4. Baskı, 2004, Prentice Hall Hazırlayan : Tacettin

Detaylı

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ş Bölüm 28 ve 29 : İstemci Sunucu Etkileşimi ve Soket API sine Giriş Kaynak : Douglas E. Comer, Computer Networks and Internets With Internet Applications, 4. Baskı, 2004, Prentice Hall Hazırlayan : Tacettin

Detaylı

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

/*Aşağıda ki kodları doğru şekilde anlar ve kullanırsanız java da sınıfları biraz da olsa anlamış olursunuz.*/ Ana Main Kodları /*Aşağıda ki kodları doğru şekilde anlar ve kullanırsanız java da sınıfları biraz da olsa anlamış olursunuz.*/ package javaapplication1; public class JavaApplication1 public static void

Detaylı

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ş. Internet Protokolleri ve Ağ Uygulamaları. Internet Protokolleri Üzerinden İletişim Bölüm 28 29 : İstemci Sunucu Etkileşimi Soket API sine Giriş Kaynak : Douglas E. Comer, Computer Networks and Internets With Internet Applications, 4. Baskı, 2004, Prentice Hall Hazırlayan : Tacettin Ayar

Detaylı

BĠLGĠSAYAR PROGRAMLAMA II C++ Programlamaya GiriĢ http://www.cplusplus.com/doc/tutorial/ Published by Juan Soulié

BĠLGĠSAYAR PROGRAMLAMA II C++ Programlamaya GiriĢ http://www.cplusplus.com/doc/tutorial/ Published by Juan Soulié BĠLGĠSAYAR PROGRAMLAMA II C++ Programlamaya GiriĢ http://www.cplusplus.com/doc/tutorial/ Published by Juan Soulié DERSİN WEB SİTESİ: http://nucleus.istanbul.edu.tr/~bilprog2/ DeğiĢkenler ve Data Türleri

Detaylı

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

JAVA DA GİRİŞ/ÇIKIŞ İŞLEMLERİ. Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 1 JAVA DA GİRİŞ/ÇIKIŞ İŞLEMLERİ Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 9 1 G/Ç işlemleriyle uygulamalara neler yaptırabiliriz... Dosya işlemleri Dosyadan okuma Dosyaya yazma Verilerin Aktarılması

Detaylı

Alıştırmalar 2 - Dağıtık Sistemler. Alıştırma 2. Prof. Dr. Th. Letschert Çeviri: Turgay Akbaş FB MNI 16. Mai 2013

Alıştırmalar 2 - Dağıtık Sistemler. Alıştırma 2. Prof. Dr. Th. Letschert Çeviri: Turgay Akbaş FB MNI 16. Mai 2013 1 Prof. Dr. Th. Letschert Çeviri: Turgay Akbaş FB MNI 16. Mai 2013 Alıştırmalar 2 - Dağıtık Sistemler Alıştırma 1 1. Neden dağıtık algoritmalar ardışık algoritmaların aksine her zaman literatürde bir melin

Detaylı

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.

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. 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. [10 puan] int param = 30; int result = 300; if (param > 45) result

Detaylı

İşletim Sistemleri. Dr. Binnur Kurt binnur.kurt@gmail.com. Omega Eğitim ve Danışmanlık http://www.omegaegitim.com. İşletim Sistemleri

İşletim Sistemleri. Dr. Binnur Kurt binnur.kurt@gmail.com. Omega Eğitim ve Danışmanlık http://www.omegaegitim.com. İşletim Sistemleri İşletim Sistemleri Dr. Binnur Kurt binnur.kurt@gmail.com Omega Eğitim ve Danışmanlık http://www.omegaegitim.com 1 S a y f a İÇİNDEKİLER 1. İşletim Sistemi 2. Kabuk 3. Prosesler 4. İplikler 5. İplikler

Detaylı

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

Uzaktan Eğitim Uygulama ve Araştırma Merkezi JAVA PROGRAMLAMA Öğr. Gör. Utku SOBUTAY İÇERİK 2 Java da Fonksiyon Tanımlamak Java da Döngüler Java da Şart İfadeleri Uygulamalar Java da Fonksiyon Tanımlamak JAVA DA FONKSİYON TANIMLAMAK 4 Fonksiyonlar;

Detaylı

İşletim Sistemleri. Dr. Binnur Kurt binnur.kurt@gmail.com. Omega Eğitim ve Danışmanlık http://www.omegaegitim.com. İşletim Sistemleri

İşletim Sistemleri. Dr. Binnur Kurt binnur.kurt@gmail.com. Omega Eğitim ve Danışmanlık http://www.omegaegitim.com. İşletim Sistemleri İşletim Sistemleri Dr. Binnur Kurt binnur.kurt@gmail.com Omega Eğitim ve Danışmanlık http://www.omegaegitim.com 1 S a y f a İÇİNDEKİLER 1. İşletim Sistemi 2. Kabuk 3. Prosesler 4. İplikler 5. 6. Prosesler

Detaylı

WWW.OZTEKHABERLESME.COM

WWW.OZTEKHABERLESME.COM ÖZTEK HABERLEŞME APİ DÖKÜMANI WWW.OZTEKHABERLESME.COM VER:6.1.0 ~ 1 ~ İÇİNDEKİLER BİLMENİZ GEREKENLER... 3 HTTP POST (XML) YÖNTEMİ... 4 TANIMLAR... 4 ÖRNEK XML YAPISI... 4 PHP ÖRNEK KOD... 5 Örnek Sayfayı

Detaylı

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

Ağ Altyapısı ve Dağıtılmış İşlem Ağ Altyapısı ve Dağıtılmış İşlem Ahmet Burak Can Hacettepe Üniversitesi abc@cs.hacettepe.edu.tr Dağıtılmış İşlem Bilgisayar ağlarında dağıtılmış işlem temel olarak iki bağlamda düşünülür: Ağ düzeyi Birlikte

Detaylı

Dağıtık Sistemler CS5001

Dağıtık Sistemler CS5001 Dağıtık Sistemler CS5001 Th. Letschert Çeviri: Turgay Akbaş TH Mittelhessen Gießen University of Applied Sciences İstemci-Sunucu Uygulamaları: Aktive Monitörler Pasif monitörden(paylaşılan durum) aktif

Detaylı

JAVA ile DAĞITIK PROGRAMLAMA

JAVA ile DAĞITIK PROGRAMLAMA KARADENİZ TEKNİK ÜNİVERSİTESİ Bilgisayar Mühendisliği Bölümü Bilgisayar Sistemleri Laboratuarı JAVA ile DAĞITIK PROGRAMLAMA 1. Giriş JAVA, ağdaki programların haberleşmesi için TCP ve UDP olmak üzere iki

Detaylı

HSancak Nesne Tabanlı Programlama I Ders Notları

HSancak Nesne Tabanlı Programlama I Ders Notları Konsol Uygulaması Oluşturma Konsol uygulaması oluşturmak için program açıldıktan sonra Create: Project ya da New Project seçeneği tıklanabilir. New Project penceresini açmak için farklı yollar da vardır.

Detaylı

Sınav tarihi : Süre : 60 dak.

Sınav tarihi : Süre : 60 dak. Selçuk Üniversitesi, Mühendislik Fakültesi, Harita Mühendisliği Bölümü Final Sınavı Test Soruları Adı soyadı : Öğrenci no : Sınav tarihi : 31.05.2016 Süre : 60 dak. 1. Ekranda ne görüntülenir? int i =

Detaylı

BİL132 Bilgisayar Programlama II

BİL132 Bilgisayar Programlama II BİL132 Bilgisayar Programlama II 8. Olağandışı durumlar (exceptions) Hacettepe Üniversitesi Bilgisayar Mühendisliği Bölümü Yüksel Tarhan Olağandışı durum Kütük bulunamadı Diskte yer kalmadı Nesne referans

Detaylı

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

Nesne tabanlı programlama nesneleri kullanan programlamayı içerir. Bir nesne farklı olarak tanımlanabilen gerçek dünyadaki bir varlıktır. Nesne tabanlı programlama nesneleri kullanan programlamayı içerir. Bir nesne farklı olarak tanımlanabilen gerçek dünyadaki bir varlıktır. Örneğin; bir öğrenci, sıra, çember, bir buton birer nesnedir. Bir

Detaylı

AHMET YESEVİ ÜNİVERSİTESİ BİLİŞİM SİSTEMLERİ VE MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ LİSANS DÖNEM ÖDEVİ

AHMET YESEVİ ÜNİVERSİTESİ BİLİŞİM SİSTEMLERİ VE MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ LİSANS DÖNEM ÖDEVİ AHMET YESEVİ ÜNİVERSİTESİ BİLİŞİM SİSTEMLERİ VE MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ LİSANS DÖNEM ÖDEVİ TBIL-303-01 Veri Yapıları ve Algoritmalar LABİRENT HAZIRLAYAN 122132151 Fahri DÖNMEZ DANIŞMAN

Detaylı

Proses. Prosesler 2. İşletim Sistemleri

Proses. Prosesler 2. İşletim Sistemleri 2 PROSESLER Proses Bir işlevi gerçeklemek üzere ardışıl bir program parçasının yürütülmesiyle ortaya çıkan işlemler dizisi Programın koşmakta olan hali Aynı programa ilişkinbirdenfazlaprosesolabilir. Görev

Detaylı

Diziler. Yrd.Doç.Dr.Bülent ÇOBANOĞLU

Diziler. Yrd.Doç.Dr.Bülent ÇOBANOĞLU Diziler Yrd.Doç.Dr.Bülent ÇOBANOĞLU Dizi (Array) Nedir? Bellekte sürekli yer kaplayan artarda sıralanmış aynı türden verilerin oluşturduğu kümeye dizi (array) denir. Dizi, çok fazla miktardaki tek tip

Detaylı

İÇİNDEKİLER. İşletim Sistemleri

İÇİNDEKİLER. İşletim Sistemleri İşletim Sistemleri Dr. Binnur Kurt binnur.kurt@gmail.com Omega Eğitim ve Danışmanlık http://www.omegaegitim.com 1 S a y f a İÇİNDEKİLER 1. İşletim Sistemi 2. Kabuk 3. Prosesler 4. 5. Prosesler Arası İletişim

Detaylı

CharArrayReader. Kılgıladığı Arayüzler: Bildirimi: Değişkenleri (fields): java.io.reader Sınıfından Kalıtsal Gelen Değişken:

CharArrayReader. Kılgıladığı Arayüzler: Bildirimi: Değişkenleri (fields): java.io.reader Sınıfından Kalıtsal Gelen Değişken: CharArrayReader java.lang.object java.io.reader java.io.chararrayreader Kılgıladığı Arayüzler: Closeable, AutoCloseable, Readable Bildirimi: public class CharArrayReader extends Reader Karekter giriş akımı

Detaylı

PROSESLER. Proses. Proses

PROSESLER. Proses. Proses Proses 2 PROSESLER Bir işlevi gerçeklemek üzere ardışıl bir program parçasının yürütülmesiyle ortaya çıkan işlemler dizisi Programın koşmakta olan hali Aynı programa ilişkin birden fazla proses olabilir.

Detaylı

while(), do-while(), for() M.İLKUÇAR 2010 MAKU-MYO

while(), do-while(), for() M.İLKUÇAR 2010 MAKU-MYO while(), do-while(), for() Döngü (loop) : Bir koşul sağlandığı (true olduğu) sürece bir veya birden çok komutun tekrarlanması işlemidir. Java Döngüler (loops) While() do-while() for ( ) while ( koşul )

Detaylı

BİL-141 Bilgisayar Programlama I (Java)

BİL-141 Bilgisayar Programlama I (Java) 1 BİL-141 Bilgisayar Programlama I (Java) Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü Not: Bu dersin sunumları, Java Bilgisayar Programlamaya Giriş, A. Yazıcı, E. Doğdu,

Detaylı

Liskov Substitution Principle (LSP) Liskov un Yerine Gecme Prensibi KurumsalJava.com

Liskov Substitution Principle (LSP) Liskov un Yerine Gecme Prensibi KurumsalJava.com Liskov Substitution Principle (LSP) Liskov un Yerine Gecme Prensibi KurumsalJava.com Özcan Acar Bilgisayar Mühendisi http://www.ozcanacar.com Barbara Liskov 1 tarafından geliştirilen bu prensip kısaca

Detaylı

Bu tehlikeli küçük(!) sahte exploiti çalışır hale getirip, inceleyelim. honeypot@honeypot:~/fake_exploit$ gcc -o 0pen0wn 0pen0wn.c

Bu tehlikeli küçük(!) sahte exploiti çalışır hale getirip, inceleyelim. honeypot@honeypot:~/fake_exploit$ gcc -o 0pen0wn 0pen0wn.c SAHTE EXPLOITLER Kullanıcı sayısının fazla olduğu bir yerel ağda sistem bütünlüğünü tehlikeli duruma sadece kullanıcıların dikkatsizliği (ki çoğu durumda sistem yöneticileri de dalgın olabiliyor) düşürmez.

Detaylı

PAKET TRANSFER SİSTEMİ

PAKET TRANSFER SİSTEMİ İLAÇ TAKİP SİSTEMİ ŞUBE MÜDÜRLÜĞÜ PAKET TRANSFER SİSTEMİ Kullanıcı Dökümanı Version 1.1 1 1. Revizyonlar... 1 2. Giriş... 1 2.1 Kapsam...1 2.2 Hedef Kitle...1 3. Gereksinimler... 1 3.1 Yazılım Gereksinimleri...1

Detaylı

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

Görsel Programlama DERS 03. Görsel Programlama - Ders03/ 1 Görsel Programlama DERS 03 Görsel Programlama - Ders03/ 1 Java Dili, Veri Tipleri ve Operatörleri İlkel(primitive) Veri Tipleri İLKEL TİP boolean byte short int long float double char void BOYUTU 1 bit

Detaylı

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

İş Parçacıkları Thread(s) İş Parçacıkları Thread(s) Bir çok geliştirici programlarını doğrusal(linear) bir şekilde oluşturmaktadır. Böyle bir durumda tek bir processin işini bitirmesi beklenmekte ve ardından bir sonraki kod parçasına

Detaylı

PAKET TRANSFER SİSTEMİ

PAKET TRANSFER SİSTEMİ İLAÇ TAKİP SİSTEMİ ŞUBE MÜDÜRLÜĞÜ PAKET TRANSFER SİSTEMİ Kullanıcı Dökümanı Version 1.2 1 1. Revizyonlar... 1 2. Giriş... 1 2.1 Kapsam... 1 2.2 Hedef Kitle... 1 3. Gereksinimler... 1 3.1 Yazılım Gereksinimleri...

Detaylı

BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ

BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ 2017-2018 BaharYarıyılı Balıkesir Üniversitesi Endüstri Mühendisliği Bölümü 7 BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ (Java Programlama Dili ve Algoritmadan Kodlamaya Geçiş) Yrd. Doç. Dr. İbrahim Küçükkoç

Detaylı

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;

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; BTEP212 Java DOĞU AKDENİZ ÜNİVERSİTESİ BİLGİSAYAR VE TEKNOLOJİ YÜKSEKOKULU BİLGİSAYAR PROGRAMCILIĞI Lab7 bazen bir metodun içinde o metodun ait olduğu sınıftan yaratılacak nesneyi veya o nesnenin bir alt

Detaylı

Programlama Dili Prensipleri. Lab Notları 1

Programlama Dili Prensipleri. Lab Notları 1 Programlama Dillerinin Tarihçesi: Programlama Dili Prensipleri Lab Notları 1 1. Derleme Bir Programın derlenme süreci 1 Lexical: Sözdizimsel analiz. Lexeme: Bir programlama dilindeki en düşük düzeyli sözdizimsel

Detaylı

PORT HABERLEŞME SERİ PORT FARUK BOZAN

PORT HABERLEŞME SERİ PORT FARUK BOZAN PORT HABERLEŞME SERİ PORT FARUK BOZAN farukbozan@javatiryakileri.com bozanfaruk@gmail.com Merhaba değerli Java dostları. Bu yazımızda port haberleşme konusuna değineceğiz. Yalnız şu noktaya dikkatinizi

Detaylı

PAKET TRANSFER SİSTEMİ

PAKET TRANSFER SİSTEMİ İLAÇ TAKİP SİSTEMİ ŞUBE MÜDÜRLÜĞÜ PAKET TRANSFER SİSTEMİ Kullanıcı Dökümanı Version 1.0 1 1. Revizyonlar... 1 2. Giriş... 1 2.1 Kapsam... 1 2.2 Hedef Kitle... 1 3. Gereksinimler... 1 3.1 Yazılım Gereksinimleri...

Detaylı

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

TÜRKİYE ELEKTRONİK FON ALIM SATIM PLATFORMU WEB SERVİS İŞLEMLERİ TÜRKİYE ELEKTRONİK FON ALIM SATIM PLATFORMU WEB SERVİS İŞLEMLERİ 1 GÜNDEM Genel Bilgiler Güvenlik İşlemleri Geliştirme Test Üretim Kullanılacak Öncelikli Web Servisleri TEFASWebServisOperParam.xlsx Dokümanı

Detaylı

BMT 101 Algoritma ve Programlama I 5. Hafta. Yük. Müh. Köksal Gündoğdu 1

BMT 101 Algoritma ve Programlama I 5. Hafta. Yük. Müh. Köksal Gündoğdu 1 BMT 101 Algoritma ve Programlama I 5. Hafta Yük. Müh. Köksal Gündoğdu 1 C++ Programlamaya Giriş Yük. Müh. Köksal Gündoğdu 2 Programlama Dili Bilgisayar dünyası 1960 lardan bu yana pek çok dille tanıştı.

Detaylı

Socket Programming. Z. Cihan TAYŞİ

Socket Programming. Z. Cihan TAYŞİ Socket Programming Z. Cihan TAYŞİ Network Application Programming Interface (API) The services provided (often by the operating system) that provide the interface between application and protocol software.

Detaylı

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

F.Ü. Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü Bilgisayar Sistemleri Laboratuvarı DENEY NO: 6 JAVA İLE DAĞITIK PROGRAMLAMA. F.Ü. Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü Bilgisayar Sistemleri Laboratuvarı DENEY NO: 6 JAVA İLE DAĞITIK PROGRAMLAMA Deneyin Amacı: Bu deneyde nesne tabanlı bir programlama dili olan JAVA

Detaylı

KOCAELİ ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ

KOCAELİ ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ KOCAELİ ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ ELEKTRONİK VE HABERLEŞME MÜHENDİSLİĞİ Nesneye Yönelik Programlama C++ ile Beaglebone Black de Bluetooth Haberleşmesi Danışman: Yrd. Doç. Dr. Mehmet YAKUT Sinan

Detaylı

Big Endian & Little Endian K.Atilla Toker İzmir Üniversitesi Meslek Yüksek Okulu Bilgisayar Programcılığı 11-2009 Ver:01

Big Endian & Little Endian K.Atilla Toker İzmir Üniversitesi Meslek Yüksek Okulu Bilgisayar Programcılığı 11-2009 Ver:01 Bilgisayar i Mimarisii i Big Endian & Little Endian K.Atilla Toker İzmir Üniversitesi Meslek Yüksek Okulu Bilgisayar Programcılığı 11-2009 Ver:01 İZMIR ÜNIVERSITESI İZMIR ÜNIVERSITESI MYO BILGISAYAR PROGRAMLAMA

Detaylı

1 PROGRAMLAMAYA GİRİŞ

1 PROGRAMLAMAYA GİRİŞ İÇİNDEKİLER IX İÇİNDEKİLER 1 PROGRAMLAMAYA GİRİŞ 1 Problem Çözme 1 Algoritma 1 Algoritmada Olması Gereken Özellikler 2 Programlama Dilleri 6 Programlama Dillerinin Tarihçesi 6 Fortran (Formula Translator)

Detaylı

Multicore/Multithread Programlama

Multicore/Multithread Programlama Multicore/Multithread Programlama Onur Tolga Şehitoğlu Bilgisayar Mühendisliği 7 Şubat 2008 Başlıklar 1 Gereksinimi Dal ile Süreç Çok İşlemci ve Dal Modelleri Neden Çoklu Dal Programlama? 2 Çok İşlemci/Çok

Detaylı

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

MAT213 BİLGİSAYAR PROGRAMLAMA I DERSİ Ders 1: Programlamaya Giriş MAT213 BİLGİSAYAR PROGRAMLAMA I DERSİ Ders 1: Programlamaya Giriş Yard. Doç. Dr. Alper Kürşat Uysal Bilgisayar Mühendisliği Bölümü akuysal@anadolu.edu.tr Ders Web Sayfası: http://ceng.anadolu.edu.tr/ders.aspx?dersid=101

Detaylı

Sınav tarihi : Süre : 60 dak. a) strstr b) strchr c) strcat d) strcpy e) strlen. a) b) d) e) 0

Sınav tarihi : Süre : 60 dak. a) strstr b) strchr c) strcat d) strcpy e) strlen. a) b) d) e) 0 Selçuk Üniversitesi, Mühendislik Fakültesi, Harita Mühendisliği Bölümü Bitirme Sınavı Test Soruları Adı soyadı : Öğrenci no : Sınav tarihi : 01.06.2017 Süre : 60 dak. 1. t değişkeni hakkında aşağıdakilerden

Detaylı

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

Bölüm 24. Java Ağ Uygulamaları 24.1 Java Appletleri. Bir Applet in Yaşam Döngüsü: Bölüm 24 Java Ağ Uygulamaları 24.1 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.

Detaylı

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

F.Ü. Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü Bilgisayar Sistemleri Laboratuvarı DENEY NO: 6 JAVA İLE DAĞITIK PROGRAMLAMA. F.Ü. Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü Bilgisayar Sistemleri Laboratuvarı DENEY NO: 6 JAVA İLE DAĞITIK PROGRAMLAMA Deneyin Amacı: Bu deneyde nesne tabanlı bir programlama dili olan JAVA

Detaylı

DÖNGÜLER (LOOPS) while(), do-while(), for(), foreach()

DÖNGÜLER (LOOPS) while(), do-while(), for(), foreach() (LOOPS) while(), do-while(), for(), foreach() Döngüler (loops) while do-while for foreach while ( koşul ) işlemler; do işlemler; while (koşul ); for (başlangıç ; koşul ; arttırma) işlemler; foreach ( tip

Detaylı

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

Karadeniz Teknik Üniversitesi Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü Bilgisayar Sistemleri Laboratuarı ĐSTEMCĐ VE SUNUCU MĐMARĐLERĐ Karadeniz Teknik Üniversitesi Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü Bilgisayar Sistemleri Laboratuarı ĐSTEMCĐ VE SUNUCU MĐMARĐLERĐ Đstemci ve sunucu mimarileri gerek bilgisayar alanında

Detaylı

işlemler bittikten sonra dosyaların kapatılması uygun olacaktır. Bunun için, fclose(fin);

işlemler bittikten sonra dosyaların kapatılması uygun olacaktır. Bunun için, fclose(fin); case 2 : C = 0.5088-0.0011*(B-135); break; case 3 : C = 0.4978-0.0010*(B-145); break; case 4 : C = 0.4878-0.0009*(B-155); break; default : printf("yanlış seçenek\n");} cout

Detaylı

Fall Object-Oriented Programming Laboratory 02 - Structures

Fall Object-Oriented Programming Laboratory 02 - Structures 2017-2018 Fall Object-Oriented Programming Laboratory 02 - Structures 10.10.2017 1. Diziler. Bir tamsayi dizisinin elemanlarını ekrana yazdırmak için void printarr(int arr[], int elem_count) prototipli

Detaylı

Java da İşleçler, Ders #3 (4 Kasım 2009)

Java da İşleçler, Ders #3 (4 Kasım 2009) Java da İşleçler, Kontrol Akış ve Döngü Deyimleri BS-515 Nesneye Yönelik Programlama Ders #3 (4 Kasım 2009) İçerikç Geçen ders: Nesne ve Sınıf Kavramları Nesne ve Sınıf ın Java da gerçekleştirilmesi Bu

Detaylı

MySqlConnection connection; MySqlCommand command; MySqlDataReader reader; MySqlDataAdapter adapter; DataTable table;

MySqlConnection connection; MySqlCommand command; MySqlDataReader reader; MySqlDataAdapter adapter; DataTable table; using System; using System.Data; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows.Forms; using MySql.Data; using MySql.Data.MySqlClient; namespace arac_servisi

Detaylı

İçerik. Java da İşleçler, İşleçler. Aritmetik İşleçler - 1. Aritmetik İşleçler - 2. Geçen ders: Bu ders: BS-515 Nesneye Yönelik Programlama

İçerik. Java da İşleçler, İşleçler. Aritmetik İşleçler - 1. Aritmetik İşleçler - 2. Geçen ders: Bu ders: BS-515 Nesneye Yönelik Programlama İçerik Java da İşleçler, Kontrol Akış ve Döngü Deyimleri Geçen ders: Nesne ve Sınıf Kavramları Nesne ve Sınıf ın Java da gerçekleştirilmesi Bu ders: Java da işleçler ( operators ) Java da kontrol-akış

Detaylı

DNS Nedir? HİKMET TÜYSÜZ

DNS Nedir? HİKMET TÜYSÜZ DNS Nedir? 14545568 HİKMET TÜYSÜZ DNS DNS, Domain Name System in kısaltılmış şeklidir. Türkçe karşılığı ise Alan İsimlendirme Sistemi olarak bilinir. DNS, 256 karaktere kadar büyüyebilen host isimlerini

Detaylı

INTEGER OVERFLOW ***************************************************************/

INTEGER OVERFLOW ***************************************************************/ INTEGER OVERFLOW BELGE HAKKINDA Bu belge "GNU Free Documentation Licence" ile kaynak gösterilmek ve önceden yazarından izin alınmak kaydıyla yeniden yayınlanabilir. Bu belgedeki eksik, yanlış ya da geliştirilmesi

Detaylı

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

CSSigner, Cybersoft firması tarafından geliştirilmiş açık kaynak kodlu e-imza yazılım kütüphanesidir. Kullanım Kılavuzu Cybersoft Enformasyon Teknolojileri Ltd. Şti. ODTU Teknokent Silikon Binaları 1. Kat No: 18 06531 ODTU / Ankara Türkiye Tel : +90 312 210 19 40 Giriş CSSigner, Cybersoft firması tarafından

Detaylı

BufferedReader. Kılgıladığı Arayüzler: Closeable, AutoCloseable, Readable. Altsınıfları: LineNumberReader. Bildirimi: public class BufferedReader

BufferedReader. Kılgıladığı Arayüzler: Closeable, AutoCloseable, Readable. Altsınıfları: LineNumberReader. Bildirimi: public class BufferedReader BufferedReader java.io java.lang.object java.io.reader java.io.bufferedreader Kılgıladığı Arayüzler: Closeable, AutoCloseable, Readable Altsınıfları: LineNumberReader Bildirimi: public class BufferedReader

Detaylı

Nesneye yönelik: Javada herşey bir nesnedir. Java nesne yönelimli olduğu için kolayca geliştirilebilir.

Nesneye yönelik: Javada herşey bir nesnedir. Java nesne yönelimli olduğu için kolayca geliştirilebilir. BÖLÜM 1 Java Programlamaya Giriş Java programlama dili ilk olarak başında James Gosling`n bulundugu Sun Microsystems tarafından 1995 yılında, Sun Java Platformunun ana unsuru olarak geliştirilmeye başlandı.

Detaylı

VERİ TABANI İŞLEMLERİ (NESNE TABANLI PROGRAMLAMA TEKNİĞİ İLE)

VERİ TABANI İŞLEMLERİ (NESNE TABANLI PROGRAMLAMA TEKNİĞİ İLE) VERİ TABANI İŞLEMLERİ (NESNE TABANLI PROGRAMLAMA TEKNİĞİ İLE) ACCESS VERİ TABANI (OLE DB - Object Linking and Embedding Data Base) Access veri tabanı kullanılarak oluşturulmuş uygulama; OLEDB çalışmak

Detaylı

JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ

JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ Java programlama dili, Java SUN bilgisayar şirketi tarafından 1991 yılında geliştiril Program bloklar halinde yazılır ve bloklar { } ile oluşturulur. Komutlar aynı satıra

Detaylı

protected Reader() Karekter akımı okumak için Reader nesnesi yaratır. Yaratılan nesne kendi kendisiyle eşzamanlı olur.

protected Reader() Karekter akımı okumak için Reader nesnesi yaratır. Yaratılan nesne kendi kendisiyle eşzamanlı olur. Reader sınıfı java.lang.object java.io.reader Karekter akımlarını okuyan soyut (abstract) sınıftır. Soyut olmasına neden olan ve dolayısıyla alt sınıflarda kurulması gereken tek metodu read(char[], int,

Detaylı

C++0x - Sağ Taraf Değerine Bağlanan Referanslar (Rvalue References)

C++0x - Sağ Taraf Değerine Bağlanan Referanslar (Rvalue References) C++0x - Sağ Taraf Değerine Bağlanan Referanslar (Rvalue References) Kaan Aslan 25 Ağustos 2008 C++ a eklenmesine karar verilen yeni bir özellik de sağ taraf değerine bağlanan referanslardır. C++0x standart

Detaylı

7.1- C#.net Giriş Çıkış İşlemleri ve Visual Studio. M.İLKUÇAR - 1

7.1- C#.net Giriş Çıkış İşlemleri ve Visual Studio. M.İLKUÇAR - 1 7.1- C#.net Giriş Çıkış İşlemleri ve Visual Studio M.İLKUÇAR - imuammer@yahoo.com 1 7- PROGRAMLAMAYA GİRİŞ 7.12- C#.NET I/O (Giriş / Çıkış Komutları- fonksiyonları) : I (Input) Giriş O (Output) Çıkış Klavyeden

Detaylı

Nesne Yönelimli Programlama

Nesne Yönelimli Programlama 1 Nesne Yönelimli Programlama Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü Not: Bu dersin sunumları, Java Programlama Dili ve Yazılım Tasarımı, Altuğ B. Altıntaş, Papatya

Detaylı

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

BMÜ-112 ALGORİTMA VE PROGRAMLAMA-II LABORATUARI DENEY-2 FÖYÜ Amaçlar: 1- Arayüzler (Interfaces) 2- Soyut Sınıflar ve Metotlar(Abstract classes and methods) Uygulama-1: interface:cihaz ac() kapat() goster(string) class: TV class: LCD class: Projector... Cihaz adındaki

Detaylı

Interface Comparator. Kılgılayan sınıf: Collator. Bildirimi: public interface Comparator

Interface Comparator. Kılgılayan sınıf: Collator. Bildirimi: public interface Comparator Interface Comparator java.util Interface Comparator Kılgılayan sınıf: Collator Bildirimi: public interface Comparator Comparator arayüzü Java Collections Framework un bir üyesidir. Bir nesneler koleksiyonu

Detaylı

Programlama Dillerinde Kullanılan Veri Tipleri

Programlama Dillerinde Kullanılan Veri Tipleri Programlama Dillerinde Kullanılan Veri Tipleri Taban/Biçim Basic Paskal C/C++/C#/Java 10 (Decimal ) - - - 16 (Hexadecimal) &hsayı veya &Hsayı $sayı 0xsayı veya 0Xsayı Üstel eüs veya Eüs eüs veya Eüs eüs

Detaylı

Mifare Kart Yazıcı/Okuyucu Modül (MFM-200)

Mifare Kart Yazıcı/Okuyucu Modül (MFM-200) 2012 Mifare Kart Yazıcı/Okuyucu Modül (MFM-200) İstanbul Yazılım ve Elektronik Teknolojileri 01.01.2012 MFM-200 Mifare Kart Yazıcı/Okuyucu Modül Genel Özellikler Ürün Kodu MFM-200 Protokol ISO14443A, ISO15693

Detaylı

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

Cybersoft Bilişim Teknolojileri Sunucu Tarafı Programlaması Kursu Final soruları. Tarih: 27 Kasım 2010 Saat: 13:30 Süre: 3 saat Cybersoft Bilişim Teknolojileri Sunucu Tarafı Programlaması Kursu Final soruları. Tarih: 27 Kasım 2010 Saat: 13:30 Süre: 3 saat 1. Kısım Çoktan Seçmeli (48 puan) 1) Aşağıdaki JAVA kod parçası çalıştırıldığında

Detaylı

BİL-141 Bilgisayar Programlama I (Java)

BİL-141 Bilgisayar Programlama I (Java) 1 BİL-141 Bilgisayar Programlama I (Java) Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü Not: Bu dersin sunumları, Java Bilgisayar Programlamaya Giriş, A. Yazıcı, E. Doğdu,

Detaylı

Dağıtık Sistemler CS5001

Dağıtık Sistemler CS5001 Dağıtık Sistemler CS5001 Th. Letschert Çeviri: Turgay Akbaş TH Mittelhessen Gießen University of Applied Sciences Dağıtık Programlar ve Uygulamalar II - - 2 Katman / 3 Adım Yaklaşımı Dağıtık Programlar

Detaylı

Java Class Yapısında Finalize Metotunun Kullanımı

Java Class Yapısında Finalize Metotunun Kullanımı Java'da finalize() Metodu: Java dili kullanılmayan nesneleri silmek için arka planda çalışan bir sisteme sahiptir. Bu yüzden C++ gibi dillerde dinamik nesne tanımlarında mutlaka yer alması gereken nesneyi

Detaylı

Nesne İşaretçileri. Binnur Kurt Bilgisayar Mühendisliği Bölümü İstanbul Teknik Üniversitesi. Sınıf Yapısı. Kalıtım Çok Şekillilik

Nesne İşaretçileri. Binnur Kurt Bilgisayar Mühendisliği Bölümü İstanbul Teknik Üniversitesi. Sınıf Yapısı. Kalıtım Çok Şekillilik Binnur Kurt kurt@ce.itu.edu.tr Bilgisayar Mühendisliği Bölümü İstanbul Teknik Üniversitesi Sınıf Yapısı Kalıtım Çok Şekillilik Nesneye Dayalı Programlama 2 1 İşaretçiler, veri değil, verinin yerleşik bulunduğu

Detaylı

Yazılım Kodlama ve İ simlendirme Standartları v1.0

Yazılım Kodlama ve İ simlendirme Standartları v1.0 Yazılım Kodlama ve İ simlendirme Standartları v1.0 İçerik Yazılım Kodlama ve İsimlendirme Standartları... 2 1. Amaç... Hata! Yer işareti tanımlanmamış. 2. Kapsam... Hata! Yer işareti tanımlanmamış. 3.

Detaylı

BİLG Dr. Mustafa T. Babagil 1

BİLG Dr. Mustafa T. Babagil 1 BİLG214 20.10.2009 Dr. Mustafa T. Babagil 1 Yapısal bilgi türlerinin tanımlanması. (C++ daki struct yapısı. ) Daha önce öğrenmiş olduğumuz bilgi tipleri char, int ve float v.b. değişkenler ile dizi (array)

Detaylı

BM 402 Bilgisayar Ağları (Computer Networks)

BM 402 Bilgisayar Ağları (Computer Networks) BM 402 Bilgisayar Ağları (Computer Networks) M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü Not: Bu dersin sunumları, ders kitabının yazarları James F. Kurose ve Keith W. Ross tarafından

Detaylı

Görsel Programlama 1

Görsel Programlama 1 Görsel Programlama 1 1. Ekrana Hello world! yazan c# console application kodları: Console.Write("Hello world!"); 2. Ekranda ilk satıra Hello, ikinci satıra world! yazan kod: Console.WriteLine("Hello");

Detaylı

PROGRAMLAMAYA GİRİŞ FONKSİYONLAR

PROGRAMLAMAYA GİRİŞ FONKSİYONLAR PROGRAMLAMAYA GİRİŞ FONKSİYONLAR Fonksiyonlar C programlama dili fonksiyon olarak adlandırılan alt programların birleştirilmesi kavramına dayanır. Bir C programı bir ya da daha çok fonksiyonun bir araya

Detaylı

ByteArrayOutputStream

ByteArrayOutputStream ByteArrayOutputStream java.io java.lang.object java.io.outputstream java.io.bytearrayoutputstream Kılgıladığı Arayüzler: Closeable, Flushable, AutoCloseable public class ByteArrayOutputStream extends OutputStream

Detaylı

NJ/NX Kontrolcüler için Modbus TCP Kütüphanesi. Modbus TCP Modbus TCP Server FB Modbus TCP Client FB

NJ/NX Kontrolcüler için Modbus TCP Kütüphanesi. Modbus TCP Modbus TCP Server FB Modbus TCP Client FB NJ/NX Kontrolcüler için Modbus TCP Kütüphanesi Modbus TCP Modbus TCP Server FB Modbus TCP Client FB Modbus TCP Modbus Protokolü sinyalleri seri ve ethernet üzerinden gönderebilmektedir. Seri üzerinden

Detaylı

Facade (Cephe) Tasarım Şablonu KurumsalJava.com

Facade (Cephe) Tasarım Şablonu KurumsalJava.com Facade (Cephe) Tasarım Şablonu KurumsalJava.com Özcan Acar Bilgisayar Mühendisi http://www.ozcanacar.com Profesyonel yazılım sistemleri birçok komponentin birleşiminden oluşur. Yazılım esnasında bir çok

Detaylı

İÇİNDEKİLER VII İÇİNDEKİLER

İÇİNDEKİLER VII İÇİNDEKİLER İÇİNDEKİLER VII İÇİNDEKİLER 1 JAVA 8 NEDİR? 1 Java Nasıl Çalışır? 3 HOTSPOT Teknolojisi Nedir? 5 Çöp Toplayıcı (GarbageCollector) Nedir? 5 Jar Nedir? 6 Java Geliştirme Ortamı 7 Açıklama Satırıları 8 Nesnel

Detaylı

BIL411 - BİLGİSAYAR AĞLARI LABORATUVARI

BIL411 - BİLGİSAYAR AĞLARI LABORATUVARI BIL411 - BİLGİSAYAR AĞLARI LABORATUVARI ITS-101A INTERNET EĞİTİM SİSTEMİ TCP/IP THE DOMAIN NAME SYSTEM (ALAN ADI SİSTEMİ) İstanbul Ticaret Üniversitesi Bilgisayar Mühendisliği Bölümü Araş. Gör. Can EYÜPOĞLU

Detaylı

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

Java da Soyutlama ( Abstraction ) ve Çok-biçimlilik ( Polymorphism ) Java da Soyutlama ( Abstraction ) ve Çok-biçimlilik ( Polymorphism ) BBS-515 Nesneye Yönelik Programlama Ders #9 (16 Aralık 2009) Geçen ders: Java Applet lerde bileşen yerleştirme türleri ( applet layouts

Detaylı