Vbasic İle Dosya Transferi
-
Visual Basicte Winsock ile dosya transferi
Tekrar Merhaba
dosya transferi için öncelikle visual basicte winsock nesnesini kullanmayı iyice öğrenin
form üzerine 2 tane winsock, 1 textbox, 2 label, 2 timer koy.
text1
command1 = "Sunucu"
command2 = "İstemci"
command6 = "Gönder"
label6 ve Label 7 yi bilgi için bağlantı sağlandı ve dosya aktarımı tamamlandı gibi
durum bildirmek için kullanıyoz
sora kodu general decleration a yapıştır..
şematik form görüntüsü
_____________________________________
============== =============
| Command1 | | Command2 |
============== =============
==================== ==========
text1.text | Gönder |
==================== ==========
© © © ©
timer1, timer2 winsock1, winsock2
==================== ==========
label 6 label 7
==================== ==========
Dim DosyaACIKMI As Boolean
Public Function DosyaGonder(HangiDosya As String)
Dim Gecici As String
Dim Gecici2 As Long
Dim DosyaBoyutu, Gonderilen
Open HangiDosya For Binary Access Read As #1 'Dosya binary formatta açılıyor
DosyaBoyutu = FileLen(HangiDosya) 'Dosya boyutu alınıyor
Gecici2 = 5000 'dosya parça parça gönderileceği için bir parçanın boyutu belirleniyor
Gonderilen = 0
Do While Gonderilen < DosyaBoyutu
If (DosyaBoyutu - Gonderilen) < Gecici2 Then 'eğer gidecek parça gecici2 den küçükse
'sadece gidecek parça kadar yer ayrılıyor...
Gecici2 = DosyaBoyutu - Gonderilen
Me.Caption = "Dosya Gönderiliyor..."
Gecici = Space$(Gecici2)
Get 1, , Gecici
Winsock2.SendData Gecici
Gonderilen = Gonderilen + Gecici2
Else 'değilse aynen gidiyor buradaki işlem yukarısı ile aynı
'kod kısaltılabilir ama anlaşılır olması için böyle daha iyi
Me.Caption = "Dosya Gönderiliyor..."
Gecici = Space$(Gecici2) 'gecici değişkenine yer ayrılıyor
Get 1, , Gecici 'dosyadan gecici2 kadar bilgi okunuyor
'Winsock1.SendData Gecici 'gönderiliyor
Winsock2.SendData Gecici 'gönderiliyor
Gonderilen = Gonderilen + Gecici2 'gönderilen değişken arttırılıyor
End If
DoEvents
Loop 'dosya gönderme işlemi bittiğine göre bunu da haber vermemiz gerekir.
Winsock2.SendData "son" 'karşı taraf bunu kontrol edecek
'eğer gelen bilgi "son" ise dosyayı kapatacak aksi takdirde devam edecek
'biz burda sonlandırıyoruz.
Close #1 'kendi dosyamızı kapatıyoruz
Me.Caption = "Tamamlandı" 've bitti.
End Function
Private Sub Command1_Click()
Dim isim
isim = InputBox("Adınızı girin", "İsim", Winsock1.LocalHostName)
If isim = "" Then Exit Sub
Label2 = isim
Winsock1.LocalPort = 100
Winsock1.Listen
Label6 = "Bağlantı bekleniyor..."
Label7 = "sunucu"
End Sub
Private Sub Command2_Click()
On Error Resume Next
Dim isim, adres
isim = InputBox("Adınızı girin", "isim", Winsock2.LocalHostName)
If isim = "" Then Exit Sub
Label3 = isim
adres = InputBox("IP adresini yada bilgisayar adını girin", "IP", Winsock2.LocalIP)
If adres = "" Then Exit Sub
Winsock2.Connect adres, 100
Label6 = "Bağlanıyor..."
Label7 = "istemci"
End Sub
Private Sub Command3_Click()
Winsock1.Close
Winsock2.Close
Label6 = "Ağ dan çıkıldı"
Label7 = "-"
Command1.Enabled = True
Command2.Enabled = True
End Sub
Private Sub Command6_Click()
DosyaGonder (Text1.Text)
End Sub
Private Sub Form_Load()
Label6 = "Durum..."
Label7 = "-"
Label6.BorderStyle = 1
Label7.BorderStyle = 1
End Sub
Private Sub Form_Unload(Cancel As Integer)
End
End Sub
Private Sub Winsock1_Close()
MsgBox "Bağlantı kesildi", vbCritical, "Hata"
Command3_Click
End Sub
Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
If Winsock1.State <> sckClosed Then Winsock1.Close
Winsock1.Accept requestID
End Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim Gecici As String
Dim Gelen As String
If DosyaACIKMI = False Then
Open "D:\ersan.jpg" For Binary Access Write As #2
DosyaACIKMI = True
ElseIf DosyaACIKMI = True Then
End If
Winsock1.GetData Gelen
Gecici = Gelen
If Gecici = "son" Then
Close #2
DosyaACIKMI = False
Else
Put 2, , Gecici
End If
End Sub
Private Sub Winsock1_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)
MsgBox "Bağlantı hatası" & Description, vbCritical, "Hata"
Command3_Click
End Sub
Private Sub Winsock2_Close()
MsgBox "Bağlantı kesildi", vbCritical, "Hata"
Command3_Click
End Sub
Private Sub Winsock2_Connect()
Label6 = "Bağlantı sağlandı"
End Sub
Private Sub Winsock2_DataArrival(ByVal bytesTotal As Long)
If DosyaACIKMI = False Then 'dosyanın daha önceden açık olup olmadığı kontrol ediliyor.
Open "D:\ersan.jpg" For Binary Access Write As #2 'gelen dosya c:\deneme.exe ile
'kaydediliyor.siz bunu değiştirebilirsiniz.
DosyaACIKMI = True
ElseIf DosyaACIKMI = True Then
End If
Winsock2.GetData Gelen 'bilgi alınıyor
Gecici = Gelen 'gecici bir değişkene atanıyor
If Gecici = "son" Then 'eğer son parçaysa dosya kapanıyor;
Close #2
DosyaACIKMI = False
Else
Put 2, , Gecici 'değilse dosyaya yazılıyor.
End If 've bitti
End Sub
Private Sub Winsock2_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)
MsgBox "Bağlantı hatası " & Description, vbCritical, "Hata"
Command3_Click
End Sub
Yararlı olması dileğiyle // HoLoCaUsT
Toplam Hit: 1585 Toplam Mesaj: 1
