'Winsock ile Dosya Alış-Verişi
'Winsock ile dosya alıp gondermenin en kolay yolu!
'Ornek kodda sadece dataarrival olayını yazdim
'winsock bağlantı işlemlerini işin en kolay kısmı
'bu kod hem alıcı hem de gonderici icin gecerlidir
'alıcı
' Winsock1.LocalPort = 100
' Winsock1.Listen
'ile dinleyecek ve connectionrequest olayında ise
' Winsock1.Close
' Winsock1.Accept (RequestID)
'ile kabul edecek
'gonderici ise
' Winsock1.Connect RemoteHost, 100
'ile bağlanıp
' DosyaGonder "c:\dosya.exe"
'fonksiyonunu kullanarak dosya gondermeye başlayacak

'Kolay Gelsin


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 acılıyor
DosyaBoyutu = FileLen(HangiDosya) 'Dosya boyutu alınıyor
Gecici2 = 5000 'dosya parca parca gonderileceği icin bir parcanın boyutu belirleniyor
Gonderilen = 0
Do While Gonderilen < DosyaBoyutu
If (DosyaBoyutu - Gonderilen) < Gecici2 Then 'eğer gidecek parca gecici2 den kucukse
'sadece gidecek parca kadar yer ayrılıyor...
Gecici2 = DosyaBoyutu - Gonderilen
Me.Caption = "Dosya Gonderiliyor..."
Gecici = Space$(Gecici2)
Get 1, , Gecici
Winsock1.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ı icin boyle daha iyi
Me.Caption = "Dosya Gonderiliyor..."
Gecici = Space$(Gecici2) 'gecici değişkenine yer ayrılıyor
Get 1, , Gecici 'dosyadan gecici2 kadar bilgi okunuyor
Winsock1.SendData Gecici 'gonderiliyor
Gonderilen = Gonderilen + Gecici2 'gonderilen değişken arttırılıyor
End If
DoEvents
Loop 'dosya gonderme işlemi bittiğine gore bunu da haber vermemiz gerekir.
Winsock1.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 Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim Gecici As String
Dim Gelen As String

If DosyaACIKMI = False Then 'dosyanın daha onceden acık olup olmadığı kontrol ediliyor.
Open "c:\deneme.exe" 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

Winsock1.GetData Gelen 'bilgi alınıyor
Gecici = Gelen 'gecici bir değişkene atanıyor

If Gecici = "son" Then 'eğer son parcaysa dosya kapanıyor;
Close #2
DosyaACIKMI = False
Else
Put 2, , Gecici 'değilse dosyaya yazılıyor.
End If 've bitti
End Sub


Baksana59
__________________