İnternet'e nasıl erişim sağlarız ?
Gerekli Nesneler Neler ?
Visual Basic ile nasıl olacak da bu internet işine girecem diye oturup kara kara duşunen bir dolu insan olduğunu az cok biliyorum. Şimdilik sizlere sozkonusu nesnelerden bahsedeceğim. Bunların en babası ve bilineni sanırım Winsock. Ardından da WinInet geliyor. Coğumuz verdiği sacma sapan hatalardan dolayı kendisiyle tanışmışızdır.
Winsock ile ilgili bir on bilgi verelim. Winsock iki ayrı protokol kullanarak iki program ya da bilgisayar arasında bağlantı kurabilmenizi sağlar. Kullandığı protokoller :
UDP (User Datagram Protocol)
TCP (Transmission Control Protocol)
Bu WinSock ile ister Internet'e bağlantı kurabilir isterseniz de programlarınıza sohbet ortamı oluşturabilirsiniz. Ben burada oğrendikleriniz ile ilgili hicbir sorumluluk kabul etmem. Einstein da atomu parcaladı ama Japonya'nın bombalanmasını istemedi.
Ben ilk uygulamamı UDP ile yapmıştım, TCP ile yaptığım ilk uygulamada da cuvalladım. TCP' nin kendine ozgu birtakım yordamları bulunuyor. Ancak UDP' de yazıp yolluyorsunuz. Mutlaka birileri bu mesajı okuyor. Tabi bu bazen istenmedik kişilere de ulaşabilir. Bu da UDP' nin biraz hızlı olmasını sağlıyor. Burada secimi size bırakıyorum, isterseniz hızlı ama guvenilir olmayan (UDP), isterseniz de biraz daha yavaş ancak guvenilir (TCP) olan bir sistem kullanılabilir.
Peki UDP ne zaman kullanılır ? Eğer Windows'un kucuk casusu, WinPopUp gibi bir program yazacaksanız UDP ile calışmak gayet mantıklı olacaktır. Ancak Internet uzerinde kullanmak, Binary dosyalar (EXE,JPEG,DLL) transfer etmek ya da onemli Chat oturumları oluşturmak istemeniz durumunda TCP kullanmanız gerekiyor.
Protokoller
Winsock ile Bezelye Avına Cıkalım
Protokol ayarları WinSock ile nasıl yapılacak ?
Bir onceki sayfada bezelyeler ile ilgili birkac oneride bulunmuştum. Bu bezelyeleri ayarlamak icin :
Winsock1.Protocol = sckTCPProtocol
ya da :
Winsock1.Protocol = sckUDPProtocol
satrlarını kullanarak UDP ya da TCP arasında bir secim yapabilirsiniz.
Port Dinleme
Winsock ile TCP Bağlantılar
Winsock ile TCP Modunda Dinlemeler
Bir programa Winsock eklediniz. Bu Winsock ile ilgili yalnızca bir adet duşunuz olmalı ya Server (Dinleyen) ya da Client (Bağlanan). Bu bolumde bir Winsock ile nasıl dinlemeye yani Server moduna gecileceğinden bahsedeceğim. Buradakilerde hicbir mantık armayın. Arayan bulurmuş ya arayın bulursanız bana da anlatırsanız :-).
' Port Ayarları
Winsock1.LocalPort = 1234
Winsock1.RemotePort = 5678
' Dinlemeye Başla
Winsock1.Listen
Port ayarları bolumunde LocalPort 'Dinleme Portu'dur. RemotePort ise bu Winsock nesnesine LocalPort uzerinden gelecek bir bağlantı sonrasında karşıya yanıt yollayacağı porttur.
Yapılan ayarlardan sonra Listen diyerek bu Winsock nesnesini ateşleyebilirsiniz.
Talepte Bulunma
Winsock ile TCP Bağlantılar
Winsock ile TCP Modunda Bağlantı Talebi
Dinleyen bir Winsock nesnesine bağlantı talebi yollamak cok kolaydır. Once bağlanılacak Winsock nesnesinin IP adresini ve Port numarasını bilmeliyiz. Biliyorsak şoyle yapalım :
' Ayarlar
Winsock1.RemotePort = 1234
Winsock1.RemoteHost = "127.0.0.1"
' Bağlanmaya Calışalım.
Winsock1.Connect
Yukarıdaki 3 satırla programlarımızı birbirine bağlamak icin ilk adımı attık. İlk adım mı ? Evet :-)).
Bu bir talepti. Ancak TCP bağlantı kurulabilmesi icin karşı taraf bunu suzgecten gecirir. Bunu da bir dahaki sayfada veriyorum.
Porta Bağlanma
Winsock ile TCP Bağlantılar
Winsock ile Talepleri Kabul Etmek
Halka arz edilen bir Winsock nesnemiz var. Biz bunları istediğimiz adama dağıtacağız. Eeee ? Amma uzadı haaa :-)
Bu durumda Winsock nesnesinin ConnectionRequest olayı harekete gecer. Bu olay icine yazılacak kodu da aşağıya yapıştırıyorum.
' Soketi Kapatalım :-)) Komik ama gercek :-)
If Winsock1.State sckClosed Then Winsock1.Cloae
' Şimdi de gelen bağlantı talebini kabul edelim.
Winsock1.Accept requestID
Bu kodlar ile bağlantınız yapılandırıldı. Hicbir mantık aramayın. Neden Winsock1.Close oldu diye merak edenler varsa şoyle acıklayayım. Eğer bir bağlantı varsa onu kapatıyor ve de sizinkini kabul ediyor. Bu da sacma ama ne yapalım boyle kullacağız. Sacma da değil ancak ilk oğreniyorsanız ileride anlayacaksınız. Birden fazla bağlantı kabul etmek isterseniz burası kilit nokta gorevini ustlenecek.
Veri Transferi
Winsock ile TCP Bağlantılar
Winsock ile Veri Yollayalım
Şimdi bir bağlantımız ancak biz veri transferi yapmak icin bir bilgi sahibi değiliz. Bu işle gorevli 2 adet anahtar var
SendData (Veri yolla)
GetData (Veriyi Oku)
Bunları nasıl kullanalım da millet bize hayran kalsın:-). Şimdi bağlı iki nesne arasında veri yollamaya başlıyoruz. Tek satır kodu var :-).
' Yolluyoruz.
Winsock1.SendData "EROL MERCAN", vbString
String olarak bir veri yolladık. Binary modda veri transferini daha sonraları goreceksiniz.
Sizi daha cok fıttırtmadan :-)) . Buradan veriyi kabul edelim de kufur etmeyin.
Winsock ile Gelen Veriyi Okuyalım
Veriyi karşıya yolladığınız zaman Winsock nesnesinin DataArrival adlı olayı harekete gecer. Bunun icine yazılacak ornek de burada yazıyor :
' Veriyi alıyoruz.
Dim GelenVeri as String
Winsock1.GetData GelenVeri
' Şimdi de ne gelmiş gorelim ?
MsgBox GelenVeri, 16, "EROL MERCAN"
Bu kadar. Bir Chat Programı ile ilgili butun bilgilere sahipsiniz. Gerisi sizin hayal gucunuzle sınırlı.
__________________
WinSock ile Chat Programı Yaptık !
Programlama0 Mesaj
●38 Görüntüleme
- ReadBull.net
- Programlama ve Yazılım
- Programlama
- WinSock ile Chat Programı Yaptık !