Merhabalar,
İlk once projenize components bolumunden(F2) winsock'u ekleyin.
Simdi winsock nedir ne değildir bilelim.
BytesReceived:Giden verinin byte cinsinden degeri
İndex:Sıra numarası
LocalHostName:Bilgisayarınızın ağ ustendeki adı
LocalIp:Bilgisayarınızın ağ ustundeki İp adresi
LocalPort: Sizin makinenizde iletişim icin acılacak port numarası.(1000’in ustunde secin bunun altındakileri işletim sistemi kullanır 655535’te port var zaten )
Name:Nesnenin ismi
Protocol: Tcp/Udp baglantı secimi.(tcp-udp nedir derseniz bir google amacaya yazın ).Sayısal olarak 0 Tcp,1 Udp yi temsil eder.
RemoteHost:Bağlanılacak makinenin ip adresi
RemotePort: Bağlantı kurulucak makinede acılacak port
State:Nesnenin durumu
Birazdan ufak bir chat programı yazıcaz bunları orada acıklarız.
GetData:Gonderilen veriyi alır
SendData:Veri gonderir
Listen:İlgli porta gelen istekleri dinlemeye başlar.
Birde olaylar var tabi ki;
Yukardan aşağı doğru acıklarsak
Close:Bağlantı koparsa bu olay meydana gelir
Connect:Bağlantı sağlandığında meydana gelir
ConnectRequest:Bir bağlantı istegi geldiginde bu olay olur.Kabul edilecekse Accept metodu ile bu bildirilmelidir.Buda State ile oğrenilir.
DataArrival:Bağlnatı kurulan makineden bir veri geldiginde meydana gelir.
Error:Bağlantıda bir hata oluştuğunda meyadana gelir
SendComplete:Veri gonderme işlemi tamamlandı.
SendProgress:Veri gonderme işlemi devam ediyor.
Kod:
Private Sub cmdBaglan_Click() 'bu kısmı winsock properties kısmındanda ayarlayabilirsiniz Dim txtIp, txtPort On Error GoTo hata data.Close 'Ne olur ne olmaz bir ac-kapa yapak

data.RemoteHost = data.LocalIP ' ip adresini al data.RemotePort = 12345 'port'u al data.Connect 'sonrada baglan cmdBaglan.Caption = "Bağlanıyor" cmdBaglan.Enabled = False 'fazla tuşa basmasınlar

Exit Sub hata: MsgBox "Hata:" & Err.Description, vbInformation data.Close 'madem hata war kapa baglantıyı End Sub Private Sub cmdGonder_Click() 'msj gonder On Error GoTo hata data.SendData txtChat 'hımm bakın ne var sendData bununlada veri yolluyoz txtDialog = txtDialog & "Ben: " & txtChat & vbCrLf txtChat = "" Exit Sub hata: MsgBox "Hata : " & Err.Description data.Close End Sub Private Sub data_ConnectionRequest(ByVal requestID As Long) 'bağlantı istegi gelmişmi 'once herhangi bir baglantımız varmı kontrol edelim 'varsa kapatalım sonra istegi kabul edelim 'state: Durumları acıklayalım 'sckClosed:kapalı sayısal degeri 0 'sckOpen:acık sayısal degeri 1 'sckListening:dinlemede sayısal degeri 2 'sckResolving:Adres cozumlemesi sayısal degeri 3 'sckHostResolved:Cozulen adres sayısal degeri 4 'sckConnecting: baglantı yapılıyor 'sckConnected: bağlantı gercekleşti 'sckClosing:Server bağlantıyı kapattı 'sckError:Bağlatıda hata oluştu If data.State 0 Then ' baglantı varmı kontrol et data.Close 'Varsa kapat data.Accept requestID 'gelen istegi kabul et End If End Sub Private Sub data_DataArrival(ByVal bytesTotal As Long) Dim gelenveri As String data.GetData gelenveri, vbString txtDialog = txtDialog & "Misafir:" & gelenveri & vbCrLf End Sub Private Sub Data_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean) txtDialog.Text = "hata oluştu:" & Description & vbCrLf End Sub Private Sub Form_Load() txtPort.Text = "12345" ' portu yazdıralım txtIp.Text = data.LocalIP ' İp yi yazdıralım End Sub Private Sub Timer1_timer() 'bu kısımda serverda bahsettigim gibi winsock'un durum kontrolu icin If data.State = 8 Then 'Karşı taraf baglantıyı kopardı MsgBox "Misafir gitti", vbInformation, "Bilgi" data.Close cmdBaglan.Caption = "Baglan" cmdBaglan.Enabled = True End If If data.State = 9 Then 'hata oluştu MsgBox "Bağlantı koptu!", vbInformation, "Bilgi" data.Close cmdBaglan.Caption = "Baglan" cmdBaglan.Enabled = True End If End Sub
Şimdi birde server kısımını yazalım
Server
Kod:
Private Sub cmdBaslat_Click() 'Sunucuyu başlat tuşu On Error GoTo hata data2.Close 'arkadaslar herzaman winsock'u once kapayın sonra acın ilginc hatalarla 'kaşılaşırsınız benden soylemesi

data2.LocalPort = 12345 'acılacak portumuz data2.Listen 'dinlemeye başla txtDialog.Text = "Kullanıcı bekleniyor" cmdBaslat.Caption = "Sunucu başladı" cmdBaslat.Enabled = False Exit Sub ' bizim hocanın bir lafı var acılan sub'ı herzaman kapatın

hata: MsgBox "Hata oluştu:" & Err.Description, vbInformation 'hata mesajı End Sub 'eger veri alışverişinde bir hata oluşursa bu kod devreye giricek 'burda number hata numarsını description hata tanımını verio şimdilikl bunları bilmeniz yeterli Private Sub Data_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean) txtDialog.Text = "hata oluştu:" & Description End Sub Private Sub cmdKes_Click() 'baglantıyı kes data2.Close 'Dikkat!!!! hemen winsock'u kapıyoruz bu onemli cmdKes.Caption = "Baglantı kesildi" cmdKes.Enabled = False cmdBaslat.Enabled = True End Sub Private Sub cmdYolla_Click() 'mesaj yolla On Error GoTo hata data2.SendData txtMsj txtDialog = txtDialog & "Ben: " & txtMsj & vbCrLf 'bilmiyenler icin vbcrlf bir alt satıra gecmeyi sağlar 'vbCrLf yerine vbnewline' da kullanabilirsiniz maksat alta gecsin 'tabi textbox'ların multiline ozelligini acıyoruz txtMsj = "" Exit Sub hata: MsgBox "Hata oluştu:" & Err.Description, vbInformation End Sub Private Sub cmdCık_click() 'cıkış MsgBox "http://sct.tr.cx", vbInformation, "Gule Gule" End End Sub Private Sub Form_Load() 'burda sorun olmasın diye port bolumune veri girşini kapadım txtPort.Text = 12345 txtPort.Enabled = False End Sub Private Sub Timer1_timer() 'şimdi state durumu degişirse nolcak

timer ile ne dondugunu hemen kontorl edelim programımız cokmesin dim

If data2.State = 8 Then 'karşı taraf baglantıyı kapadı MsgBox "Misafir gitti", vbInformation, "Bilgi" data2.Close cmdBaslat.Enabled = True End If If data2.State = 9 Then 'hata oluşursa MsgBox "Baglantı koptu!", vbInformation, "Bilgi" data2.Close cmdBaslat.Enabled = True End If End Sub 'talepler bolumune geldik karşı taraf konuşalımmı diye istek yollarsa bu kod calışır Private Sub data2_ConnectionRequest(ByVal requestID As Long) On Error Resume Next If data2.State 0 Then data2.Close 'hemen winsock'u kontrol edek kapalımı data2.Accept requestID 'tamamsa istegi alalım hemen beklemesin dimi

txtDialog = "Misafir geldi: " & vbCrLf Exit Sub hata: MsgBox "Hata oluştu:" & Err.Description, vbInformation End Sub 'En onemli kısım burası aslında gelen/giden veriyi kontrol ederiz burda Private Sub data2_DataArrival(ByVal bytesTotal As Long) Dim gelen As String data2.GetData gelen, vbString 'getdata ile gelen veriyi cekiyoruz bir kenara

txtDialog = txtDialog & "Misafir : " & gelen & vbCrLf End Sub Private Sub Data2_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean) txtDialog.Text = "hata oluştu:" & Description & vbCrLf End Sub
[Kaynak:MSDN]-TR
[Kaynak-2:http://msdn.microsoft.com/en-us/libr...(v=vs.60).aspx]-ING
__________________