Visual Basicte Winsock ile dosya transferiTekrar Merhabadosya transferi için ncelikle visual basicte winsock nesnesini kullanmayı iyice ğreninform üzerine 2 tane winsock, 1 textbox, 2 label, 2 timer koy. text1command1 = "Sunucu"command2 = "İstemci"command6 = "Gnder"label6 ve Label 7 yi bilgi için bağlantı sağlandı ve dosya aktarımı tamamlandı gibidurum bildirmek için kullanıyozsora kodu general decleration a yapıştır.. şematik form grüntüsü | Command1 | | Command2 | text1. text | Gnder | © © © ©timer1, timer2 winsock1, winsock2 label 6 label 7 Dim DosyaACIKMI As BooleanPublic Function DosyaGonder Dim Gecici As StringDim Gecici2 As LongDim DosyaBoyutu, GonderilenOpen HangiDosya For Binary Access Read As #1 'Dosya binary formatta açılıyorDosyaBoyutu = FileLen 'Dosya boyutu alınıyorGecici2 = 5000 'dosya parça parça gnderileceği için bir parçanın boyutu belirleniyorGonderilen = 0Do While Gonderilen < DosyaBoyutuIf < Gecici2 Then 'eğer gidecek parça gecici2 den küçükse'sadece gidecek parça kadar yer ayrılıyor... Gecici2 = DosyaBoyutu - GonderilenMe. Caption = "Dosya Gnderiliyor..."Gecici = Space$(Gecici2)Get 1, , GeciciWinsock2. SendData GeciciGonderilen = Gonderilen + Gecici2Else 'değilse aynen gidiyor buradaki işlem yukarısı ile aynı'kod kısaltılabilir ama anlaşılır olması için byle daha iyiMe. Caption = "Dosya Gnderiliyor..."Gecici = Space$(Gecici2) 'gecici değişkenine yer ayrılıyorGet 1, , Gecici 'dosyadan gecici2 kadar bilgi okunuyor'Winsock1. SendData Gecici 'gnderiliyorWinsock2. SendData Gecici 'gnderiliyorGonderilen = Gonderilen + Gecici2 'gnderilen değişken arttırılıyorEnd IfDoEventsLoop 'dosya gnderme işlemi bittiğine gre 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ıyoruzMe. Caption = "Tamamlandı" 've bitti. End FunctionPrivate Sub Command1_Click Dim isimisim = InputBox("Adınızı girin", "İsim", Winsock1. LocalHostName)If isim = "" Then Exit SubLabel2 = isimWinsock1. LocalPort = 100Winsock1. ListenLabel6 = "Bağlantı bekleniyor..."Label7 = "sunucu"End SubPrivate Sub Command2_Click On Error Resume NextDim isim, adresisim = InputBox("Adınızı girin", "isim", Winsock2. LocalHostName)If isim = "" Then Exit SubLabel3 = isimadres = InputBox("IP adresini yada bilgisayar adını girin", "IP", Winsock2. LocalIP)If adres = "" Then Exit SubWinsock2. Connect adres, 100Label6 = "Bağlanıyor..."Label7 = "istemci"End SubPrivate Sub Command3_Click Winsock1. CloseWinsock2. CloseLabel6 = "Ağ dan çıkıldı"Label7 = "-"Command1. Enabled = TrueCommand2. Enabled = TrueEnd SubPrivate Sub Command6_Click DosyaGonder (Text1. Text)End SubPrivate Sub Form_Load Label6 = "Durum..."Label7 = "-"Label6. BorderStyle = 1Label7. BorderStyle = 1End SubPrivate Sub Form_Unload EndEnd SubPrivate Sub Winsock1_Close MsgBox "Bağlantı kesildi", vbCritical, "Hata"Command3_ClickEnd SubPrivate Sub Winsock1_ConnectionRequest If Winsock1. State <> sckClosed Then Winsock1. CloseWinsock1. Accept requestIDEnd SubPrivate Sub Winsock1_DataArrival Dim Gecici As StringDim Gelen As StringIf DosyaACIKMI = False ThenOpen "D:\ersan. jpg" For Binary Access Write As #2DosyaACIKMI = TrueElseIf DosyaACIKMI = True ThenEnd IfWinsock1. GetData GelenGecici = GelenIf Gecici = "son" ThenClose #2DosyaACIKMI = FalseElsePut 2, , GeciciEnd IfEnd SubPrivate Sub Winsock1_Error MsgBox "Bağlantı hatası" & Description, vbCritical, "Hata"Command3_ClickEnd SubPrivate Sub Winsock2_Close MsgBox "Bağlantı kesildi", vbCritical, "Hata"Command3_ClickEnd SubPrivate Sub Winsock2_Connect Label6 = "Bağlantı sağlandı"End SubPrivate Sub Winsock2_DataArrival 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 = TrueElseIf DosyaACIKMI = True ThenEnd IfWinsock2. GetData Gelen 'bilgi alınıyorGecici = Gelen 'gecici bir değişkene atanıyorIf Gecici = "son" Then 'eğer son parçaysa dosya kapanıyor;Close #2DosyaACIKMI = FalseElsePut 2, , Gecici 'değilse dosyaya yazılıyor. End If 've bittiEnd SubPrivate Sub Winsock2_Error MsgBox "Bağlantı hatası " & Description, vbCritical, "Hata"Command3_ClickEnd SubYararlı olması dileğiyle // HoLoCaUsT Holocaust The Late Night Hacker