Teknoloji 27.03.2003 İbrahim Gündüz - netyorum.com / Sayı: 127
VISUAL BASIC'TE WINSOCK NESNESİ VE MAHARETLERİ
Merhaba,
Başlıktan da anlaşıldığı gibi size bu yazıda, Visual basic´in iletişim
komponentlerinden olan Winsock komponentinden bahsedeceğim. Winsock nesnesi,
belirtilen bir ip adresi ve iletişim portu numarası ile windows´un soketlerini
kullanarak iki bilgisayar arasında iletişim kurulmasını sağlar.
Şimdi bu nesnenin nasıl kullanıldığını inceleyelim.
Winsock ile programlama yapılırken bilinmesi gereken en önemli kriter,
taraflardan bir tanesi İstemci durumunda iken, diğer taraf sunucu durumundadır.
Aşağıda iki bilgisayar arasında iletişim sağlamaya yönelik bir örnek program
bulunmaktadır.
Sunucu Tarafı:
Dim GelenVeri As String
Private Sub Form_Load()
Winsock1.LocalPort = 23
Winsock1.Listen
End Sub
Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
If winsock1.State <> sckClosed Then Winsock1.Close
Winsock1.Accept RequestID
End Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Winsock1.GetData GelenVeri
End Sub
Şimdi de yukarıda görülen kodları açıklayalım.
Dim GelenVeri As String |
GelenVeri isimli , String tipi
bir değişken tanımladık. |
Private Sub Form_Load() |
Form Yüklenmesi anı olayı
tanımlandı. |
Winsock1.LocalPort = 23 |
Winsock´un bilgisayar üzerinde
dinleyeceği port´un numarası
tanımlandı. |
Winsock1.Listen |
Winsock tanımlanan portu
dinlemeye başladı. |
End Sub |
Form yüklenmesi anı olayı
sonlandırıldı. |
Private Sub
Winsock1_ConnectionRequest(ByVal requestID As Long) |
Winsock nesnesine belirtilen
bağlantı noktasından , bağlantı
talebi gelmesi olayı tanımlandı. |
If winsock1.State <> sckClosed
Then Winsock1.Close |
Eğer winsock nesnesi o anda
aktif bir bağlantı kurmuş ise
bağlantı sonlandırılıyor. |
Winsock1.Accept RequestID |
Gelen bağlantı isteği kabul
ediliyor. |
End Sub |
Winsock nesnesine belirtilen
bağlantı noktasından , bağlantı
talebi gelmesi olayı sonlandırılıyor. |
Private Sub
Winsock1_DataArrival(ByVal bytesTotal As Long) |
Winsock Nesnesine Veri gelmesi
olayı tanımlandı. |
Winsock1.GetData GelenVeri |
Winsock nesnesinden gelen veri,
GelenVeri isimli değişkene aktarıldı. |
End Sub |
Olay sonlandırıldı. |
GelenVeri isimli değişkene aktarılmış olan veri herhangi bir metin kutusu
etiket nesnesine aktarılarak görülebilir.
(Örn: Text1.Text = GelenVeri veya Label1.Caption = GelenVeri)
İstemci Bölümü:
Private Sub Form_Load()
Winsock1.Connect "Sunucu Bilgisayarın IP adresi", karşı taraftaki bilgisayarda
dinlenmek üzere açılan portun numarası (Az önce biz 23 nolu portu dinlenmek
üzere
açmıştık.)
End Sub
Private Sub Form_Click ()
Winsock1.SendData "ibrahim"
End Sub
Yukarıda görülen kodlar için fazla bir şey söylemeye gerek yok. Connect komutunu
kullanarak (Winsock1.Connect Karşı tarafın ip adresi, karşı tarafın dinleme
portu) bağlantı kuruluyor. Form´a tıkladığınızda SendData komutu ile tırnak
içindeki mesaj karşı tarafa aktarılıyor.
İşte herşey bu kadar basit.
Yukarıdaki tipte yapılan bağlantı dinleme yöntemi aynı anda sadece bir adet
bağlantıyı kabul etmektedir. Server mantığı ile çalışan dinleme yöntemi (Birden
fazla bağlantı kabul eden sunucu) sonraki sayılarda anlatılacaktır.
İbrahim Gündüz
e-posta:
gunduzonline@celiknet.com
GündüzOnline
Yazılım Tasarım Grubu
|