Jump to page: 1 2
Thread overview
Soket Oluşturma Örneği[İstek]
Apr 13, 2013
huseyin
Apr 13, 2013
Salih Dinçer
Apr 13, 2013
Salih Dinçer
Apr 21, 2013
huseyin
May 12, 2013
huseyin
Aug 28, 2013
agora
Aug 28, 2013
agora
Aug 28, 2013
agora
Aug 29, 2013
agora
Sep 01, 2013
Salih Dinçer
April 13, 2013

merhaba arkadaşlar

D ile bir soket oluşturup veri gönderip alma hakkında bana 2-3 örnek verebilir misiniz dlang.org dan baktıklarımdan birşey anlamadım açıkçası :D

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

April 13, 2013

Bunu, Ali hocam da kabül ederse istek kabül edelim; bir ders konusunu işlemek üzere...

Ama forumu takip edenler ile birlikte sınıfı inceleyip örnek türetelim olmaz mı?

Ayrıca tartışmaya şurada (http://ddili.org/forum/thread/1040) devam edelim, ne dersin? Çünkü benzer bir soru geçen sene, yıl sonuna doğru ve hatta senin tarafından sorulmuş...:)

Belki çatıları incelemek faydalı olabilir. Sonuçta onlar D tarafından sunulmuş olanakları kullanıyorlar. Ama dolaylı yollardan kütüphaneye (ws2_32.lib, wsock32.lib) erişerek; ama doğrudan D ilintileri vasıtasıyla (std.c.windows.winsock, std.c.linux.socket) çalışıyor. Yani demek istediğim, işletim sisteminin olanaklarını araştırmaya ihtiyaç bırakmadan, bir kısım gerekli enum vb. veri türlerini de tanımlayarak bu imkanı bize sunmuşlar.

Sanırım çok zor değildir... <_<

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

April 13, 2013

Ek olarak...

Ben TCP/IP'nin katman yapıları dışında neredeyse pek bir şey bilmiyorum. Internette arama yapan sıradan bir web kullanıcısı kadar biliyor olmalıyım. Buna rağmen işimiz bilgisayar ve internet üzerinden olduğuna göre artık şu soket midir, roket midir her ne haltsa öğrenelim gitsin...:)

Sevgiler, saygılar...

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

April 21, 2013

Alıntı (Salih Dinçer:1365910871):

>

Ek olarak...

Ben TCP/IP'nin katman yapıları dışında neredeyse pek bir şey bilmiyorum. Internette arama yapan sıradan bir web kullanıcısı kadar biliyor olmalıyım. Buna rağmen işimiz bilgisayar ve internet üzerinden olduğuna göre artık şu soket midir, roket midir her ne haltsa öğrenelim gitsin...:)

Sevgiler, saygılar...

Bir öğrenemedim c++ da birkaç dokuman buldum sağlam adamlardan ama malesef ben yine anlamıyorum yine anlamıyorum biri bana bunu anlatsın :D

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

April 21, 2013

Ben buna bakmayı düşünüyorum ama şu sıralar çok meşgulum. İki hafta sonra tekrar deneyelim. :)

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

May 04, 2013

Aşağıda hem sunucu hem de istemci olarak kullanılabilen bir örnek var.

Denemek için aynı bilgisayar üzerinde bir konsolda önce sunucuyu başlatın. Programın ismi 'deneme' olsun:
'
$ ./deneme
'

Ondan sonra başka bir konsolda istemciyi başlatın:
'
$ ./deneme --rol=istemci
'

İstemci sunucuya 15 bayt bilgi gönderecek ve ikisi de sonlanacaklar. Olayı açıklama satırlarında anlatıyorum:

import std.stdio;
import std.socket;
import std.getopt;
import std.string;

enum port = 8080;

int main(string[] parametreler)
{
   // Sunucu rolünde mi olalım istemci mi
   enum Rol { sunucu, istemci }
   Rol rol;

   try {
       // Rol olamayacak değer geldiğinde hata atar
       getopt(parametreler, "rol", &rol);

   } catch {
       stderr.writefln("Kullanım:\n    %s --rol={sunucu|istemci}",
                       parametreler[0]);
       return 1;
   }

   final switch (rol) {
   case Rol.sunucu:  sunucu(); break;
   case Rol.istemci: istemci(); break;
   }

   return 0;
}

void sunucu()
{
   // Önce bağlantıları karşılayacak olan soketi hazırlıyoruz
   auto dinleyici = new TcpSocket();
   scope (exit) {
       /* Gereken temizlik işlemleri
        *
        * Not: Tabii ki alt düzeyler kavramlar olan soketlerle böyle uğraşmak
        * yerine soketi sarmalayan bir Soket yapısı tanımlayabiliriz ve bu
        * işlemleri o türün sonlandırıcısında yapabiliriz. */

       writefln("Yerel %s kapatılıyor", dinleyici.localAddress());

       // BOTH: "hem okuma hem yazma" anlamında
       dinleyici.shutdown(SocketShutdown.BOTH);
       dinleyici.close();
   }

   // Hangi portu dinleyeceğini belirtiyoruz
   dinleyici.bind(new InternetAddress(port));
   writefln("Port: %s", port);

   // İstemci bekliyoruz
   dinleyici.listen(1);
   writefln("Bekliyorum...");

   // Şimdi o sokette bağlantı kabul ediyoruz
   Socket bağlantı = dinleyici.accept();
   scope (exit) {
       writefln("İstemci bağlantısı %s kapatılıyor", bağlantı.remoteAddress());
       bağlantı.shutdown(SocketShutdown.BOTH);
       bağlantı.close();
   }
   writefln("İstemci bağlandı: %s", bağlantı.remoteAddress());

   // Okunan veriyi bu belleğe alacağız
   ubyte[1000] bellek;
   bool bitti_mi = false;

   while (!bitti_mi) {
       const adet = bağlantı.receive(bellek);

       if (adet == Socket.ERROR) {
           writefln("OKUMA HATASI");

       } else {
           writefln("%s bayt aldım: %s", adet, bellek[0..adet]);
           // Okunan verinin ne anlama geldiği bütünüyle sunucu ve istemci
           // arasındaki protokole bağlıdır.
       }

       bitti_mi = (adet < bellek.length);
   }
}

void istemci()
{
   auto bağlantı = new TcpSocket();
   bağlantı.connect(new InternetAddress("127.0.0.1", port));
   scope (exit) {
       bağlantı.shutdown(SocketShutdown.BOTH);
       bağlantı.close();
   }

   // Bu örnekte mesajı string olarak göndereceğiz. Aslında send() parametre
   // olarak const(void)[] alır.
   string mesaj = format("%s%s%s", "merhaba", 42, "dünya");
   const adet = bağlantı.send(mesaj);
   writefln("%s bayt gönderdim", adet);
}

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

May 12, 2013

Oh be sonunda anladım teşekkür ederim D de soket de çok kolaymış

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

August 28, 2013

Guzel bir konu aslinda ben de soket hakkinda bir konu acmistim sorum bu yondeydi :)

Simdi bilgimin yetmedigi bir noktadan soru soracagim yuzeysel cevap yeterli olur mantik acisindan.

Ornegin bir program var. Bu programa konsoldan bir deger giriyoruz. Bu degerleri isliyoruz ve sadece bu programa ozel bi port ile istemci baslatiyoruz. Bunu nasil saglariz acaba.

ornegin phpmyadmin :) mysql 3306 portunu kullaniyor ve ornegin 3306 portuna erisim saglanmazsa phpmyadmin'e ulasim saglanmiyor. ben de buna benzer bi konu dusunuyorum da acaba yapilabilir mi?

localhost:1907 gibi cagiricam ve degerleri arayuzde gostericem. Sorun html tasarim vs. degil :) konsoldan islemi yaparken, veri eklerken mutlaka bir port'a bagli olmak gerekiyor. bunlar mumkun olan seyler mi? yapmak icin neler gerekiyor acaba? :)

Ben derdimi aslinda aciklayamadim :( Anlayabilen abiler, arkadaslarim aciklayabilir mi derdimi? :)

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

August 28, 2013

Evet hocam :) O program onu yapiyor mesela ben o programda o port acilmadan veri ekleme, silme vs. islemleri yapilsin istemiyorum. O port uzerine ayrica bir de web tarafli goruntuleyici istiyorum. MySQL & PhpMyAdmin mantiginda bunlar yapilabilir seyler degil mi hocam? :)

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

August 28, 2013

Hocam ben de anlatamadim zaten :) yani sorun bende. en onemli seyleri anlatamiyorum :)

Bir de socket programlamada localhost olarak aciyorum server cok yavas. Bu winsock nesnesi ile mi alakali.

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

« First   ‹ Prev
1 2