Veri Aktarımı Winsock ActiveX

| 14 Ağustos 2013 |




Veri Aktarımı Winsock ActiveX

Bilgisayarlar, bilgisayar ve akıllı cihazlar veya internet yapısı içersinde bağlantı ve haberleşmeyi sağlayan activeX denetim olan winsock microsoft komponentidir. Genelde işletim sistemi yapısna göre C:\Windows\System32 klasörü içersinde veya C:\Windows\SysWOW64 klasörü içersine bulunması gereken  MSWINSCK.OCX dosyası bu haberleşmeyi sağlayan temel bir dosyadır. Normalde bu dosya programlama dili olan visual basic kurulumu veya visual studio ile beraber ilgili dizine kopyalanır ve işletim sistemine lisanslı olarak kayıt yani register edilir. Bu dosyayı eğer microsoftla uyumlu başka programlarda kullanmak isteseniz manuel olarak yukarıda belirttiğim klasöre kendinizin kopyalaması ve register edilmesi gerekir.

MSWINSCK.OCX ve Reg indir

Kopyalamadan sonra ;
Başlat > Çalıştır alanına aşağıdaki komutu girmeniz gerekir.
regsvr32 c:\windows\system32\mswinsck.ocx veya

regsvr32 C:\Windows\SysWOW64\mswinsck.ocx

regsvr32kullanımı



Önemli eğer win7 ve üzeri işletim sistemi kullanıyorsanız. CMD yani çalıştır komutunu yönetici olarak çalıştımanız gerekiyor. Bunun içinde aşağıdaki şekilde cmd.exe yi çalıştırıp, o şekilde register edin. Bu sadece 32 bit işletim sistemlerinde geçerli olup, 64 bit de bu bileşenin ben çalıştıramadım. Çalıştırabilenlerin yorumlar içinde paylaşımı bekliyorum 🙂

cmd_administrator
Bazı programlar bunun kullanımı sırasında lisans isteyecektir. Bu durumda indirdiğiniz zipli reg dosyasını kullanabilir veya Başlat>Çalıştır >Regedit yazıp bu dosyadan dilerseniz manuel giriş yapabilirsiniz.

Artık bu bileşeni kullanmaya başlayabilirsiniz. Bilgisayarlar arasında yazı dosya görüntü veya sesli iletişim için kullanılan bu bileşende TCP veya UDP olarak iki farklı protokol kullanılabiliyor.

UDP Kullanıcı Datagram Protokulu, TCP ise Transmission Control Protocol İletişim Kontrol Protokoludur.
UDP bağlantı akışı ve iletişim hatasında tekrar bağlantı kurulması ve iletişim işlemlerini göz ardı eder ve verinin iletim süresini en aza indirir ve kullanılan band genişliğini azaltır. Bu yüzden ses ve görüntü aktarımı söz konusu ise UDP protokolu daha fazla tercih edilir. Anlayacağımız aslında minumum protokol kullanarak veri iletilmesi için geliştirilmiştir.
TCP de alıcı tarafı bulmak ve iletişim paketlerinin teslim edilip edilmediğini kontrol etmek hatalı paketlerinin tekrar gönderilmesi ve alıcı ile bağlantının kontrolunu sağlamak her zaman önemlidir.

Ben söyle bir uygulama yapacağım. Amacım bilgisayarımdan bir akıllı cihaza veri göndermek olacak. Bu nedenle chazla bilgisayarımı cross  kablo denilen çapraz bağlı bir kablo ile cihaza bağlıyorum. Simulasyon sırasında bu cihaz hyper terminal le bekleme konumda olan bir pc olacak.
Farklı olması açısından istemciyi Microsoft Access de yazıyorum. Öncelikle boş bir veritabanı açalım. Boş bir form oluşturalım. ALT+F11 üzerinden veya Veritabanı Araçları > Visual Basic üzerinden Basic Editör kısmına ulaşalım bu alanda Menüde Tools> Reference kısmına ulaşıyoruz. Artık sıra MSWINSCK.OCX activeX bileşenini kullanacağımızı belirtmeye geldi. Aşağıdaki gibi eklememizi yapıyoruz.Browse üzerinden açılan pencerede dosya adına direk MSWINSCK.OCX yazıp Aç dememiz yeterli olacaktır.

mswinsck_ocx1

mswinsck_ocx

Kütüphanemizi MSWINSCK.OCX komponnentini ekledikten sonra boş br form açıp bu bileşeni forma ekliyorum.

mswinsck_ocx2

mswinsck_ocx3

Formda bağlan diye bir düğme ve DURUM adında bir etiket oluşturup Düğmeye tıklanması olayına aşağıdaki kodları yazalım.

[php]

Private Sub baglan_Click()

‘ 0-sctTCPProtocol 1-sctUDPProtocol
Winsock.Protocol = 1
‘Bağlantı açık olma ihtimaline karşı kapatma yapıyoruz.
Winsock.Close

‘Bağlantı IP ve port burada Telnet 23 ü kullandım
Winsock.RemoteHost = "10.1.1.10"
Winsock.RemotePort = 23
Winsock.Connect

‘State bize bağlantının durumunu gösteriyor
If Winsock.State = 0 Then
MsgBox "KAPALI!", vbInformation, "BİLGİ"
End If
If Winsock.State = 8 Then
MsgBox "KAPATILIYOR!", vbInformation, "BİLGİ"
End If
If Winsock.State = 6 Then
MsgBox "BAĞLANIYOR!", vbInformation, "BİLGİ"
End If
If Winsock.State = 3 Then
MsgBox "BAĞLANTI BEKLEMEDE!", vbInformation, "BİLGİ"
End If
If Winsock.State = 9 Then
MsgBox "HATA!", vbInformation, "BİLGİ"
End If
If Winsock.State = 2 Then
MsgBox "SUNUCU DİNLEMEDE!", vbInformation, "BİLGİ"
End If
If Winsock.State = 1 Then
MsgBox "AÇIK!", vbInformation, "BİLGİ"
End If
If Winsock.State = 7 Then
MsgBox "BAĞLANTI TAMAM!", vbInformation, "BİLGİ"
Me!DURUM = "BAĞLANTI OK"
Me!DURUM.BackColor = vbWhite
End If
DoCmd.RunCommand acCmdRefresh
End Sub
[/php]

Simulasyon açısında karşıdaki bağlantımız HyperTerminal’ı  Winsock kullanan bir PC olsun. Ve bir sunucu gibi bekleme konumunda olsun. Ara dan Aranmayı bekle yapalım.

Diğer tarafta yine gonder diye bir buton yapalım. Bu cihaza veri göndermemizi sağlayacak.

[php]

Private Sub gonder_Click()

If Winsock.State = 7 Then

‘Winsock.SendData Me!alan1 < örnek yapı
‘mesaj1 isimli mesajı şeç ve alan1 ve de alan2 yi mesajda güncelle

‘Akıllı Cihaz manuelinda yazan text yapısını kullanıyorum
Winsock.SendData "<stx>mesaj1<ext>"
Winsock.SendData "<stx>Utest1<if>" & Forms!Form1!Form3A!alan1 & "<etx>"
Winsock.SendData "<stx>UTest2<if>" & Forms!Form1!Form3A!alan2 & "<etx>"
MsgBox "GONDERILDI!"
Forms!Form1!Form3A!DURUMU = "OK"
Forms!Form1!Form3A.SetFocus
DoCmd.GoToRecord , , acNext
Forms!Form1.SetFocus
Else
MsgBox "BAGLANTI YOK YENİDEN BAGLANIN !"
Me!DURUM = "BAĞLANTI PROBLEMİ"
Me!DURUM.BackColor = vbRed
End If
End Sub

[/php]

Bu yapı içersinde bağlantı kurup, Form3A içersinde ki bir alt tabloda var olan alan1 ve alan2 bilgilerin her gönder i tıklattığımda cihaza gidecektir. Hyper Terminal üzerinden bunu takip edebilirsiniz.



Kategori: Nasıl Yapılır?

Bora M. Deniz ()

Teknoloji, internet, ve bilişim gibi konularda paylaşımlarım ve yazılarımla 2011 den beri teknorapor.com dayım. Sosyal medya da yararlı bulduğunuz yazılarımı paylaşmanız dileklerimle... The author shares and writings IT, internet and technology news blog offering

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir