'Winsock ile Basit Bir Telnet Porgramı Yapmak


'Bunun icin:
'2 Commandbutton:Bağlanmak ve bağlantı kesmek icin
'1 Label:bağlantı durumu icin
'5 tane Textbox:karşı ip,karşı port,veri almak,veri gondermek,verinin boyutu icin
'1 tane winsock ve 1 tane de timer:winsock durumu icin(interval=100)
'ayrıca text4'un multiline=true olmalı

Private Sub Command1_Click()'bağlanmak icin
Select Case Winsock1.State 'winsock durumuna gore

Case "0": 'eğer kapalı ise bağlantıyı kuracağız

Winsock1.RemoteHost = Text1.Text
Winsock1.RemotePort = Text2.Text
Winsock1.Connect

Case "7": 'eğer bir bağlantı varsa bunun olduğunu ve bağlantı hakkında bilgi vereceğiz
MsgBox "Zaten Bir Bağlantı Kurulu:" & vbCrLf & Winsock1.RemoteHostIP & ":" & Winsock1.RemotePort, vbInformation, "Hata"

End Select
End Sub

Private Sub Command2_Click()'bağlantıyı kesmek icin
Select Case Winsock1.State 'winsock durumuna gore

Case "0": 'eğer bağlantı yoksa bişey yapmayacağız

Case "7": 'eğer bağlantı varsa bir soru soracağız ona gore bağlantı ya devam edecek ya da kesilecek
Dim cevap
cevap = MsgBox(Winsock1.RemoteHostIP & ":" & Winsock1.RemotePort & " ile Bağlantıyı Kesmek istediğinizden Emin Misiniz?", vbInformation + vbYesNo, "Bağlantı Kes")
If cevap = vbYes Then
Winsock1.Close


End If
End Select
End Sub

Private Sub Text3_KeyPress(KeyAscii As Integer)
'Bağlantı Kurulu iken karşı tarafa mesaj gondermek icin text3 'ye mesaj yazıp
'entera basınca mesaj gidicek bunu icin once bağlı olup olmadığımızı kontrol edicez
If Winsock1.State = 7 Then
If KeyAscii = 13 Then 'basılan tuş enter ise
Winsock1.SendData Text3.Text 'text3u gonder
Text4.Text = Text4.Text & "Gonderilen:" & Text3 & vbCrLf

Text3.Text = "" 'text3u temizledik

End If
End If
End Sub

Private Sub Text4_Change()
Text4.SelStart = Len(Text4.Text) 'bununla mesaj geldi mi en son kalan yerinden devam
'edicek biz de scroll bar ile surekli aşağı inmek zorunda kalmayacağız.

End Sub

Private Sub Timer1_Timer()
'winsock durumunu anlamak icin

Select Case Winsock1.State
Case "0": Label1.Caption = "Kapalı"
Case "1": Label1.Caption = "Acık"
Case "7": Label1.Caption = "Bağlı"
Case "9": Label1.Caption = "Hata!"
Winsock1.Close 'hata olduğunda winsock tekrar hazır duruma gelecek

Case "8": Label1.Caption = "Bağlantı Kesildi"

Winsock1.Close

End Select
End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim gelen As String 'gelen veriyi string olarak tanımlamazsak duzgun alamayız
Winsock1.GetData gelen
Text4.Text = Text4.Text & "Gelen:" & gelen & vbCrLf 'gelen veri text4'e aktırlacak
Text5.Text = Text5.Text + bytesTotal / 1000 'burada da gelen verinin boyutunu kilobyte a ceviriyoruz
've text5'e ekleyerek devam ediyoruz.

End Sub

Private Sub Form_Load()
Text5.Text = "0" 'gelen verinin boytunu hesaplarken text5i sıfırlamak gerek yoksa hata cıkar

End Sub

__________________