Picproje Elektronik Sitesi

PROGRAMLAMA DİLLERİ => Visual Basic => Konuyu başlatan: EMG81 - 16 Ocak 2011, 03:37:47

Başlık: winsock ile chat programı bukadar zor olmamalı!!!
Gönderen: EMG81 - 16 Ocak 2011, 03:37:47
microsoft winsock control 6.0 kompanenti ile visual studio 2010 da sabahtan akşama kadar denemeler yaptım ama 2 bilgisayar arasında local ağda chat programı tarzında ki programımı çalıştıramadım.

http://rapidshare.com/files/442750724/Aae__Baae_lantae_sae__Deneme.rar (http://rapidshare.com/files/442750724/Aae__Baae_lantae_sae__Deneme.rar)
Başlık: Ynt: winsock ile chat programı bukadar zor olmamalı!!!
Gönderen: iyildirim - 16 Ocak 2011, 11:21:50
Hala 2008 kaldığım için ancak kodlara notepat ile bakabildim.
Gördüğüm kadarı ile göndermek gönderici kısmı ile ilgili yazılmış kodlar var. dinleyici ile ilgili birşey yok. (form olarak göremediğimi belirtmiştim.) tek bir makinada geliştirme yapıyorsan önerim gönderici ve dinleyici için iki ayrı winsock komponent kullanman yada gönderici ve dinleyici için iki ayrı form da geliştirmen .
local port sadece dinleyen için önemli. göndericinin local portu 0 olabilir. 

Dinleyen winsock'a local port ataması yapıp bind etmeli ve dinlemesini söylemelisin. Bu da formun load eventinde yapılmalı.

        AxWinsock1.LocalPort = 1001
        AxWinsock1.Listen()

şeklinde

dinleyiciye connection request  geldiğinde  connection_request eventinde gelen requestID yi de kullanıp bağlantı isteği kabul edilmeli.

    Private Sub AxWinsock1_ConnectionRequest(ByVal sender As Object, ByVal e As AxMSWinsockLib.DMSWinsockControlEvents_ConnectionRequestEvent) Handles AxWinsock1.ConnectionRequest

        If AxWinsock1.CtlState <> MSWinsockLib.StateConstants.sckConnected Then
            AxWinsock1.Close()
        End If

        AxWinsock1.Accept(e.requestID)
    End Sub

Göndericinin connect ve send kısımları yazdığın gibi, oralarda  sorun  yok.
Bilgi alınması kısmı dinleyicinin  dataarrival event'ine yazılacak.

    Private Sub AxWinsock1_DataArrival(ByVal sender As Object, ByVal e As AxMSWinsockLib.DMSWinsockControlEvents_DataArrivalEvent) Handles AxWinsock1.DataArrival

       Dim strData As Object
        AxWinsock1.GetData(strData)
    End Sub


Sanırım bu kadar.
Komponent isimleri vs. örneklerde hatalı olabilir. gereken düzenlemeleri yaparsın.
Kolay gelsin.
Başlık: Ynt: winsock ile chat programı bukadar zor olmamalı!!!
Gönderen: EMG81 - 17 Ocak 2011, 19:08:24
Yanıtınız için çok teşekkür ederim... Evet sonunda yaptım. Fakat şimdide şöyle bir sorun varki 3 bilgisayarım var demiştim ya, 2 bilgisayar yazışma yaparken birisi bağıntısını kopartıp 3. pc ye bağlanınca sorun oluyor. yani textbox1.text (ip adresi girilen text) in olduğu satır hata veriyor. bağıntıyı Normal bir şekilde koparıp başka ip ye nasıl bağlanabilirim ?
Başlık: Ynt: winsock ile chat programı bukadar zor olmamalı!!!
Gönderen: iyildirim - 17 Ocak 2011, 21:21:55
Hata tam olarak nedir anlayamadım.
winsock.close bağlantıyı koparır, kapatır. bu durumda da karşı tarafta close event'inin tetiklenmesi gerekir. winsock ile çalışırken her türlü metedu çalıştırmadan önce .state'e bakılmalı.

Anladığım kadarı ile TCP kullanarak iki bilgisayar konuşabiliyor.
İzninizle önerim asıl amaç olan bilgisayarın adının diğer bilgisayarlarda görünmesini sağlamaya çalışmak olacak.
Bunun için; her iki kontrolun özelliklerinden protokol UPD seçilmeli. UDP protokolünde bir bağlantı yapmak gerekmiyor. Remotehost olarak subnet'in broadcast adresini tanımlayın. (192.168.1.255 gibi) Sonra sadece datayı gönderin.
Hoşçakalın
Başlık: Ynt: winsock ile chat programı bukadar zor olmamalı!!!
Gönderen: EMG81 - 18 Ocak 2011, 00:42:17
dediklerinizi yaptığımda form load daki dinleyicinin axwinsock1.listen()  komutunda hata oluşuyor...
Başlık: Ynt: winsock ile chat programı bukadar zor olmamalı!!!
Gönderen: iyildirim - 18 Ocak 2011, 01:08:53
Kusura bakmayın, eksik yazmışım.  listen kullanmadan deneyin. gerekirse local port uygulamanıza reserve etmek için bind kullanın.

Başlık: Ynt: winsock ile chat programı bukadar zor olmamalı!!!
Gönderen: Digimensch - 18 Ocak 2011, 01:20:46
Bu winsock compenentinin c# icin de  versionu varmi?
Yada ayni compenent c# icinde kullanilabilnirmi? Evet ise hangi compenenti yani hangi dll?
sizin uygulamanizda iki tane dll gördüm
AxInterop.MSWinsockLib.dll
ve
Interop.MSWinsockLib.dll
hangisi?
Başlık: Ynt: winsock ile chat programı bukadar zor olmamalı!!!
Gönderen: EMG81 - 18 Ocak 2011, 01:21:44
listen kullanmadan deneme yaptım ve çalışmadı... Bind hakkında pek bir bilgim yok .. Sizden rica etsem saatte geç oldu ama Bu konuyu biraz açabilirmisiniz ?