VBasic ve Winsock Nesnesi (Ag)
Bir Agda Birden Fazla Kisiyle Iletisim Kurma Yöntemi
Öncelikle konuya winsock ile nasil baglanti kuruldugunu bildiginizi varsayarak devam ediyorum.
Simdi makalemizde 2 adet winsock kullanimindan bahsedecegim fakat bu winsock un 1’i indexli(daha sonradan yeni bir winsock olusturmak için) digeri ise normal bi winsock olacak.
Simdi öncelikle 1. winsock umuz (index li) bu winsock umuza tiklayarak index özelligine bir 0 yaziyoruz. Daha sonra bir adet daha winsock ekliyoruz. Ben kendim yaparken bu winsock un ismini tepki olarak degistirdim. Bunlari ekledik simdi ne ise yariyacagindan söz edecegim.
Tepki olarak adlandirdigim Winsock nesnesi sürekli dinleme modunda olacak yani Winsock nesnesinde hata veya herhangi bir nedenden dolayi winsock dinleme modundan çiktigi zaman tekrar dinleme moduna girmesi lazim. Daha sonradan birisi bizden bilgisarimizla iletisim kurmak üzere baglandigi zaman direk tepki isimli winsock ile iletisim kursun ve bize listemize eklemek isteyip istemedigimizi sorsun. Yani söyle diyebiliriz MSN messenger kullanan arkadaslarim bilir biri bizle iletisim kurmaya çalistigi zaman önce bize onay ile ilgili bir pencere gelir onayliyorsak o kisi ile baska bir baglanti kurulur.
MSN messengerin mantigi tamamen sudur.
Onaylama için baska bir baglanti nesnesi görevlidir. Ve bu baglanti nesnesinin adresi sabittir. Yani söyleki sizin her msn listenizdeki bir kisi için bir winsock görevlendirilmis ve bu winsock nesnesi o kisi ile sabit orantili. Siz oturum açmaya kalktiginiz zaman otamatik olarak sizin ip adresiniz ve bos olan port numaraniz MSN messenger in kurulu oldugu ana server a bildiriliyor. Ve listelerinizdeki kisilerin size baglanma ip leri ve portlari otamatik olarak degisiyor. Simdi bazi arkadaslarimiz diyecek bunu nasil bu kadar çabuk yapiyor ? Aslinda çabukluktan ziyade su eger farkeden arkadaslarimiz varsa msn e baglandiktan sonra msn yaklasik 5 saniye veya bazilarina göre bu 7 8 saniye sürecinde bir bekliyor iste bu bekleme süresinde MSN ip ve port adresini otamatik olarak diger yerlere dagatim yapiyor. Arkadaslar MSN in çalisma mantigi tamamen bu.
Simdi ise bizim kendi projemize dönelim.
- Bizim mantigimiz daha baska bir süreç içinde çalisacak fakat MSN ’ e yakin bir mantik kullanacagiz.
Simdi Baglanti ile görevli (0) indexli winsock umuz bizim sabit. Neden sabit diye soracak olrsaniz biz bu (0) indexli winsock umuz ile Tepki nesnesi arasinda istek için baglanti kuracagiz.
Evet daha sonra istek için (0) index li winsock umuz devreye giriyor. Arkadasimizin ag ismi veya ip adresi ile istek gönderiyoruz. Yanliz sunu belirteyim winsock(0) ile tepki isimli winsock umuz ayni Port adresi üzerinden birbirlerine baglanacaktir. Bu yüzden sakin winsock(0) ile tepki isimli winsock nesnesinin Port numaralarini farkli yapmayin.
Simdi winsock(0)’a istek baglantisi için yazacagimiz kod söyle :
Winsock(0).Connect ip_adresi,port_numarasi
Daha sonra karsi tarafin tepki isimli winsock nesnesi aktif hale geliyor onun Connection Request olayina da su kodu yazacagiz.
cevap = Msgbox "Karsi taraf baglanmak için onay istiyor. Onayliyormusunuz ?",vbyesno
if cevap=vbyes then tepki.accept requestID
eger cevap a dönen deger vbyes (yani evetse) baglanti saglanacak eger degilse baglanti onaylanmayacak.
Sonra tepki nesnesi burda görevini baska bir winsock a devir yapacak bu islem çok basit olacak. Baglanti tamamlandigi takdirde yani tepki isimli winsock’un Connect olayina veri gönderme yöntemi ile IP ve onun için ayirdiginiz özel port numarasini göndereceksiniz.
Daha sonra hemen program yeni bir Winsock üretecek ve karsi tarafa gönderdigi port numarasini yeni açtigi winsock ile esdeger yaparak winsock nesnesini dinlemeye alacak. Daha sonra karsi tarafin yapacagi tek ise ise gönderilen ip ve port numarasi ile port açilan bilgisayara baglanacak. Yalniz karsi taraf yeni bir winsock açti ayni sekilde siz de yeni bir winsock açip onu baglanma için denemeye baslatacaksiniz. Baglandigi zamansa artik gerisi sizin islem becerinize kalmis ister her kisi için veri tabaninizda kayit turarak her seferinde ip adresi girmek yerine veri tabaniniza kaydettiginiz bilgiler dogrultusunda baglanmaya çalisabilirsiniz.