IRCForumları - IRC ve mIRC Kullanıcılarının Buluşma Noktası
  sohbet

Yeni Konu aç Cevapla
 
LinkBack Seçenekler Stil
Alt 21 Mayıs 2013, 13:52   #1
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
VBasic ve Winsock Nesnesi (Ağ)




Bir Ağda Birden Fazla Kişiyle İletişim Kurma Yöntemi

Öncelikle konuya winsock ile nasıl bağlantı kurulduğunu bildiğinizi varsayarak devam ediyorum.

Şimdi makalemizde 2 adet winsock kullanımından bahsedeceğim fakat bu winsock un 1’i indexli(daha sonradan yeni bir winsock oluşturmak için) diğeri ise normal bi winsock olacak.

Şimdi öncelikle 1. winsock umuz (index li) bu winsock umuza tıklayarak index özelliğine bir 0 yazıyoruz. Daha sonra bir adet daha winsock ekliyoruz. Ben kendim yaparken bu winsock un ismini tepki olarak değiştirdim. Bunları ekledik şimdi ne işe yarıyacağından söz edeceğim.

Tepki olarak adlandırdığım Winsock nesnesi sürekli dinleme modunda olacak yani Winsock nesnesinde hata veya herhangi bir nedenden dolayı winsock dinleme modundan çıktığı zaman tekrar dinleme moduna girmesi lazım. Daha sonradan birisi bizden bilgisarımızla iletişim kurmak üzere bağlandığı zaman direk tepki isimli winsock ile iletişim kursun ve bize listemize eklemek isteyip istemediğimizi sorsun. Yani şöyle diyebiliriz MSN messenger kullanan arkadaşlarım bilir biri bizle iletişim kurmaya çalıştığı zaman önce bize onay ile ilgili bir pencere gelir onaylıyorsak o kişi ile başka bir bağlantı kurulur.

MSN messengerin mantığı tamamen şudur.

Onaylama için başka bir bağlantı nesnesi görevlidir. Ve bu bağlantı nesnesinin adresi sabittir. Yani şöyleki sizin her msn listenizdeki bir kişi için bir winsock görevlendirilmiş ve bu winsock nesnesi o kişi ile sabit orantılı. Siz oturum açmaya kalktığınız zaman otamatik olarak sizin ip adresiniz ve boş olan port numaranız MSN messenger in kurulu olduğu ana server a bildiriliyor. Ve listelerinizdeki kişilerin size bağlanma ip leri ve portları otamatik olarak değişiyor. Şimdi bazı arkadaşlarımız diyecek bunu nasıl bu kadar çabuk yapıyor ? Aslında çabukluktan ziyade şu eğer farkeden arkadaşlarımız varsa msn e bağlandıktan sonra msn yaklaşık 5 saniye veya bazılarına göre bu 7 8 saniye sürecinde bir bekliyor işte bu bekleme süresinde MSN ip ve port adresini otamatik olarak diğer yerlere dağatım yapıyor. Arkadaşlar MSN in çalışma mantığı tamamen bu.

Şimdi ise bizim kendi projemize dönelim.

- Bizim mantığımız daha başka bir süreç içinde çalışacak fakat MSN ’ e yakın bir mantık kullanacağız.
Şimdi Bağlantı ile görevli (0) indexli winsock umuz bizim sabit. Neden sabit diye soracak olrsanız biz bu (0) indexli winsock umuz ile Tepki nesnesi arasında istek için bağlantı kuracağız.

Evet daha sonra istek için (0) index li winsock umuz devreye giriyor. Arkadaşımızın ağ ismi veya ip adresi ile istek gönderiyoruz. Yanlız şunu belirteyim winsock(0) ile tepki isimli winsock umuz aynı Port adresi üzerinden birbirlerine bağlanacaktır. Bu yüzden sakın winsock(0) ile tepki isimli winsock nesnesinin Port numaralarını farklı yapmayın.

Şimdi winsock(0)’a istek bağlantısı için yazacağımız kod şöyle :

Winsock(0).Connect ip_adresi,port_numarasi

Daha sonra karşı tarafın tepki isimli winsock nesnesi aktif hale geliyor onun Connection Request olayına da şu kodu yazacağız.

cevap = Msgbox "Karşı taraf bağlanmak için onay istiyor. Onaylıyormusunuz ?",vbyesno
if cevap=vbyes then tepki.accept requestID

eğer cevap a dönen değer vbyes (yani evetse) bağlantı sağlanacak eğer değilse bağlantı onaylanmayacak.

Sonra tepki nesnesi burda görevini başka bir winsock a devir yapacak bu işlem çok basit olacak. Bağlantı tamamlandığı takdirde yani tepki isimli winsock’un Connect olayına veri gönderme yöntemi ile IP ve onun için ayırdığınız özel port numarasını göndereceksiniz.

Daha sonra hemen program yeni bir Winsock üretecek ve karşı tarafa gönderdiği port numarasını yeni açtığı winsock ile eşdeğer yaparak winsock nesnesini dinlemeye alacak. Daha sonra karşı tarafın yapacağı tek işe ise gönderilen ip ve port numarası ile port açılan bilgisayara bağlanacak. Yalnız karşı taraf yeni bir winsock açtı aynı şekilde siz de yeni bir winsock açıp onu bağlanma için denemeye başlatacaksınız. Bağlandığı zamansa artık gerisi sizin işlem becerinize kalmış ister her kişi için veri tabanınızda kayıt turarak her seferinde ip adresi girmek yerine veri tabanınıza kaydettiğiniz bilgiler doğrultusunda bağlanmaya çalışabilirsiniz.

 
Alıntı ile Cevapla

IRCForumlari.NET Reklamlar
sohbet odaları sohbet odaları Benimmekan Mobil Sohbet
Cevapla

Etiketler
, nesnesi, vbasic, ve, winsock


Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir)
 
Seçenekler
Stil

Yetkileriniz
Konu Acma Yetkiniz Yok
Cevap Yazma Yetkiniz Yok
Eklenti Yükleme Yetkiniz Yok
Mesajınızı Değiştirme Yetkiniz Yok

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodu Kapalı
Trackbacks are Kapalı
Pingbacks are Açık
Refbacks are Açık


Benzer Konular
Konu Konuyu Başlatan Forum Cevaplar Son Mesaj
C# DATETIME nesnesi OzGuR C# 0 11 Nisan 2012 00:38
Winsock ile IRC'e bağlanmak CanCeL Visual Basic 0 10 Eylül 2010 21:00
C# Random Nesnesi Sunay C# 0 24 Nisan 2010 01:52