Haberler:

Foruma Resim Yükleme ve Boyut Sınırlaması ( ! )  https://bit.ly/2GMFb8H

Ana Menü

Winsock kullanımı

Başlatan EMG81, 27 Şubat 2012, 23:06:49

EMG81

Merhaba,

Nette aradığım örneklerin neredeyse tümü basic ile yazılmış. Ender birkaç C# projesine rastladım. Fakat onlar üzerinde de pek ilerleme katedemedim. C# ve winsock ile çalışan kimler yada kimseler var mı ? Varsa en basit örnek uygulamalarını bizimle paylaşır mı ? (Server mümkünse multiclient olmasın. En basit yazılmış Server ve client olsun. )

ogunduru

Öncelikle .Net platformunda WCF konusunu okumanızı ve temel kavramları anlamanızı öneriyorum. Çünkü WCF teknolojisi geliştirildikten sonra tüm konsept değişti. Winsock üzerinden yola çıkarak çok fazla yeni bilgiye ulaşamazsınız. Anahtar kelimeniz WCF olmalı. WCF öğrenerek pişman olmayacağınızın garantisini veririm. msdn üzerinde de sayısız örnek ve kaynak bulabilirsiniz. Aşağıdaki link bir başlangıç olabilir. Bunun yanı sıra codeproject.com sitesini de muhakkak görün. İyi çalışmalar.
http://msdn.microsoft.com/library/ee958158.aspx
Matematik Mühendisi bir hobi elektronikçi

iyildirim

Alıntı yapılan: ogunduru - 27 Şubat 2012, 23:51:30
Öncelikle .Net platformunda WCF konusunu okumanızı ve temel kavramları anlamanızı öneriyorum. Çünkü WCF teknolojisi geliştirildikten sonra tüm konsept değişti. Winsock üzerinden yola çıkarak çok fazla yeni bilgiye ulaşamazsınız. Anahtar kelimeniz WCF olmalı. WCF öğrenerek pişman olmayacağınızın garantisini veririm. msdn üzerinde de sayısız örnek ve kaynak bulabilirsiniz. Aşağıdaki link bir başlangıç olabilir. Bunun yanı sıra codeproject.com sitesini de muhakkak görün. İyi çalışmalar.
http://msdn.microsoft.com/library/ee958158.aspx

Taraflardan biri MCU olduğu durumda da WCF teknolojisini kullanabilirmiyiz. Yoksa PC - MCU iletişimi için winsock mu daha iyidir.

ogunduru

WCF teknolojisi, kapsamı çok geniş olan iletişim seçeneklerini sunuyıor. Bunların içinde http servis uygulamaları, tcp, udp vb. her şey var. Bir microsoft teknolojisi olduğu için de, sadece microsoft işletim sistemlerinin olduğu yerlerde çalışır. Bu yüzden iletişimin MCU tarafı için bir şey beklememek gerekli.

Diğer taraftan iletişimin iki tarafının da aynı alt yapı ile yapılması şartı yok. Bir MCU ile bilgisayarın haberleşmesi isteniyorsa, windows üzerinde çalışacak uygulama tarafı WCF ve TCP/IP olabilir.
Matematik Mühendisi bir hobi elektronikçi

EMG81

#4
Amacım çok basit bir uygulama yapmak. Atıyorum, Bağlantı kur. Karşıya "A" stringini gönder karşıdan "B" stringini al. Bağlantıyı kes. Yapmak istediğim şey bu kadar basit ve Vb6 ile bu istediklerim (winsock ile) 5-10 kod satırında hallediliyor. Vb6 işimide görüyor. Fakat ne bileyim işte. Memnun değilim.. (ayrıca winsock çok hızlı bağlantı kurup, veri alış verişi yapabiliyor.)

C# ta bu komponenti kullanmazsak birsürü tanımlamalar yapıp işin böyle üstesinden gelmek gerekiyor. Uzun kod satırları, yavaş bağlantı. vs vs.

Halbuki winsock var. Çok basit ve kullanımı kolay ama örnek yok. (En azından bulduklarımı çalıştırmayı başaramadım.)

EMG81

#5
Hallettim :)

        private void button8_Click_1(object sender, EventArgs e)
        {
            w1.Close();                                                       
            w1.Connect("127.0.0.1","12345");
        }


önce winsock açıksa kapatıyoruz ve sonra ip ile portunu girip açıyoruz(bu deney olduğu için ip ile portu sabit kullandım. İstenirse değiştirilebilinir)

        private void button9_Click(object sender, EventArgs e)
        {
            w1.SendData("Naber ?");
        }


Server ı dinliyorken bağlantımızı kuruyoruz ve sonra send butonumuz ile istediğimiz stringi karşıya gönderiyoruz.
        private void w1_DataArrival(object sender, AxMSWinsockLib.DMSWinsockControlEvents_DataArrivalEvent e)
        {
            String gelen = "";
            Object data = (object)gelen;
            w1.GetData(ref data);
            gelen = (String)data;

            textBox1.Text = gelen;
        }


bu kısımdada karşı taraftan gelen paket verileri alıyoruz. DataArrival kısmındaki çevrimleri beceremiyordum. Halbuki ne kadar da basitmiş değil mi? :)
Not: Bu işin client tarafıdır...