Die Community zu .NET und Classic VB.
Menü

VB 5/6-Tipp 0287: Dateien via Winsock im Netzwerk/Internet übertragen

 von 

Beschreibung 

Damit eine größere Datei über die Winsock verschickt werden kann, muß sie in kleine Happen zerlegt, in dieser Form versendet und auf der Zielseite wieder zusammengesetzt werden. Dieser Tip bietet hierzu eine komfortable Möglichkeit. Neben der frei wählbaren Paketgröße kann auch ein dualer Betrieb stattfinden: Während auf einen Kanal noch die Datei gesendet wird kann gleichzeitig auf dem anderen ein File empfangen werden. Dafür ist lediglich der Port zu wechseln.

Schwierigkeitsgrad:

Schwierigkeitsgrad 2

Verwendete API-Aufrufe:

keine

Download:

Download des Beispielprojektes [16,8 KB]

'Dieser Quellcode stammt von http://www.activevb.de
'und kann frei verwendet werden. Für eventuelle Schäden
'wird nicht gehaftet.

'Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum.
'Ansonsten viel Spaß und Erfolg mit diesem Source!

'------------- Anfang Projektdatei Project1.vbp -------------
' Die Komponente ' (MSWINSCK.OCX)' wird benötigt.

'--------- Anfang Formular "Form1" alias Form1.frm  ---------
' Steuerelement: Rahmensteuerelement "Frame1"
' Steuerelement: Schaltfläche "Command1" auf Frame1
' Steuerelement: Timersteuerelement "Timer1" auf Frame1
' Steuerelement: Bildfeld-Steuerelement "Picture1" auf Frame1
' Steuerelement: Dateiauswahlliste "File1" auf Frame1
' Steuerelement: Verzeichnisauswahlliste "Dir1" auf Frame1
' Steuerelement: Festplattenauswahlliste "Drive1" auf Frame1
' Steuerelement: Textfeld "Text1" auf Frame1
' Steuerelement: Windows Socket "Winsock1" auf Frame1
' Steuerelement: Beschriftungsfeld "Label2" auf Frame1
' Steuerelement: Beschriftungsfeld "Label1" auf Frame1
' Steuerelement: Beschriftungsfeld "Label3" auf Frame1
' Steuerelement: Beschriftungsfeld "Label4" auf Frame1
' Steuerelement: Beschriftungsfeld "Label5" auf Frame1
' Steuerelement: Beschriftungsfeld "Label6" auf Frame1

Option Explicit

Const ResponseTimeOut = 20 '20 Sekunden
Const PaketSize = 2048

Dim Start&
Dim OkFlag As Boolean
Dim TimeOut As Boolean
Dim Connected As Boolean

Private Sub Form_Load()
  Timer1.Enabled = False
  Timer1.Interval = 400
  Winsock1.LocalPort = CInt(Text1.Text)
  Winsock1.Listen
  
  Label2.Caption = "Nicht verbunden"
  Label3.Caption = App.Path & "\Testdatei.bmp"
  
  If Dir$(Label3.Caption) <> "" Then
    Label4.Caption = Int((FileLen(Label3.Caption) / 1024) * 10) _
                     / 10 & " kB"
  End If
End Sub

Private Sub Form_Unload(Cancel As Integer)
  Unload Form2
End Sub

Private Sub Command1_Click()
  Call SendFile(Label3.Caption)
End Sub

Private Sub Drive1_Change()
  Dir1.Path = Drive1.Drive
End Sub

Private Sub Dir1_Change()
  File1.Path = Dir1.Path
End Sub

Private Sub File1_Click()
  Dim AA$, BB$
  
    AA = File1.Path
    If Right$(AA, 1) <> "\" And Right$(AA, 1) <> "/" Then
      AA = AA & "\"
    End If
    
    Label3.Caption = AA & File1.FileName
    Label4.Caption = Int((FileLen(Label3.Caption) / 1024) * 10) _
                     / 10 & " kB"
End Sub

Private Sub Timer1_Timer()
  If Timer - Start > ResponseTimeOut Then
    TimeOut = True
    OkFlag = False
  End If
End Sub

Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
  If Winsock1.State <> sckClosed Then Winsock1.Close
  Winsock1.Accept requestID
  Winsock1.SendData 77
  Label2.Caption = "Verbunden, bereit"
  Connected = True
End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
  Dim Data() As Byte
    
    Winsock1.GetData Data, vbString
    If Data(0) = 77 Then
      OkFlag = False
    End If
End Sub

Private Sub SendFile(FileName$)
  Dim Data() As Byte
  Dim l&, AA$, BB$, x&, FN%, TM As Single
  
  On Error Resume Next
    
    If Not Connected Then
      MsgBox ("Es besteht keine Verbindung zum Client!")
      Exit Sub
    End If
    
    Call Disable
    l = FileLen(FileName)
    AA = Hex(l)
    Do While Len(AA) < 8
      AA = "0" & AA
    Loop
    
    BB = LastPath(FileName)
    BB = BB & Space$(257 - Len(BB))
    AA = "New Data|" & AA & BB
    ReDim Data(0 To Len(AA) - 1)
    For x = 1 To Len(AA)
      Data(x - 1) = Asc(Mid$(AA, x, 1))
    Next x
    
    Winsock1.SendData Data
    
    If WaitForResponse Then
      FN = FreeFile
      Open FileName For Binary As #FN
      ReDim Data(1 To PaketSize) As Byte
      
      Label2.Caption = "Sende Daten"
      Label2.Refresh
      
      l = LOF(FN)
      TM = Timer
      For x = 1 To l \ PaketSize
        Get #FN, , Data
        Winsock1.SendData Data
        Call ProgressBar(x * PaketSize, 0, l)
        Label5.Caption = Int(x * PaketSize / 1024 / (Timer - TM) * _
                         10) / 10 & " kB/Sec"
                         
        Label5.Refresh
        If Not WaitForResponse Then
          MsgBox ("Übertragunsfehler")
          Call ProgressBar(0, 0, l)
          Label2.Caption = "Verbunden, bereit"
          Call Enable
          Exit Sub
        End If
      Next x
    
      If l Mod PaketSize <> 0 Then
        ReDim Data(1 To l Mod PaketSize) As Byte
        Get #FN, , Data
        Winsock1.SendData Data
        Call ProgressBar(l, 0, l)
        Label5.Caption = Int(x * PaketSize / 1024 / (Timer - TM) * _
                         10) / 10 & " kB/Sec"
                         
        Label5.Refresh
        If Not WaitForResponse Then
          MsgBox ("Übertragunsfehler")
          Call ProgressBar(0, 0, l)
          Label2.Caption = "Verbunden, bereit"
          Call Enable
          Exit Sub
        End If
      End If
    
      Close FN
      Label2.Caption = "Verbunden, bereit"
      Call ProgressBar(0, 0, l)
    Else
      Label2.Caption = "Timeout"
      MsgBox ("Konnte Verbindung nicht herstellen!")
    End If
    Call Enable
End Sub

Private Function WaitForResponse() As Boolean
  OkFlag = True
  TimeOut = False
  Start = Timer
  Timer1.Enabled = True
  Do While OkFlag
    DoEvents
  Loop
  If Not TimeOut Then WaitForResponse = True
  Timer1.Enabled = False
End Function

Private Sub ProgressBar(ByVal Prg&, ByVal Min&, ByVal Max&)
  Dim Fx&
  Static LastX
    If Prg < Min Or Prg > Max Or Max <= Min Then Exit Sub
    Prg = Int(100 / (Max - Min) * (Prg - Min))
    With Picture1
      
      If Prg > 0 Then
        If Prg <> LastX Then
          Picture1.Cls
          Fx = (Picture1.ScaleWidth - 2) / 100 * Prg
          Picture1.Line (0, 0)-(Fx + 1, Picture1.ScaleHeight _
                        - 1), &H8000000D, BF
          .CurrentX = Fx + 3
          .CurrentY = 0
          Picture1.Print Trim$(CStr(Prg) & " %")
          LastX = Prg
        End If
      Else
        Picture1.Cls
      End If
    End With
End Sub

Private Function LastPath(ByVal Path$) As String
   Dim AA$, BB$, x&
     For x = Len(Path) To 1 Step -1
       AA = Mid$(Path, x, 1)
       If AA = "/" Or AA = "\" Then
         Exit For
       Else
         BB = AA & BB
       End If
     Next x
     LastPath = BB
End Function

Private Sub Disable()
  Text1.Enabled = False
  Command1.Enabled = False
  File1.Enabled = False
  Dir1.Enabled = False
  Drive1.Enabled = False
  MousePointer = vbHourglass
End Sub

Private Sub Enable()
  Text1.Enabled = True
  Command1.Enabled = True
  File1.Enabled = True
  Dir1.Enabled = True
  Drive1.Enabled = True
  MousePointer = vbDefault
End Sub
'---------- Ende Formular "Form1" alias Form1.frm  ----------
'--------- Anfang Formular "Form2" alias Form2.frm  ---------
' Steuerelement: Rahmensteuerelement "Frame1"
' Steuerelement: Schaltfläche "Command1" auf Frame1
' Steuerelement: Bildfeld-Steuerelement "Picture1" auf Frame1
' Steuerelement: Timersteuerelement "Timer1" auf Frame1
' Steuerelement: Festplattenauswahlliste "Drive1" auf Frame1
' Steuerelement: Verzeichnisauswahlliste "Dir1" auf Frame1
' Steuerelement: Dateiauswahlliste "File1" auf Frame1
' Steuerelement: Textfeld "Text1" auf Frame1
' Steuerelement: Textfeld "Text2" auf Frame1
' Steuerelement: Windows Socket "Winsock1" auf Frame1
' Steuerelement: Beschriftungsfeld "Label8" auf Frame1
' Steuerelement: Beschriftungsfeld "Label1" auf Frame1
' Steuerelement: Beschriftungsfeld "Label2" auf Frame1
' Steuerelement: Beschriftungsfeld "Label4" auf Frame1
' Steuerelement: Beschriftungsfeld "Label3" auf Frame1
' Steuerelement: Beschriftungsfeld "Label7" auf Frame1
' Steuerelement: Beschriftungsfeld "Label9" auf Frame1
' Steuerelement: Beschriftungsfeld "Label5" auf Frame1

Option Explicit

Const ResponseTimeOut = 20 '20 Sekunden

Dim Start&
Dim OkFlag As Boolean
Dim TimeOut As Boolean
Dim Connected As Boolean
Dim Awaiting As Boolean

Private Sub Form_Load()
  Timer1.Enabled = False
  Timer1.Interval = 400
  
  Drive1.Drive = "c:"
  Dir1.Path = "c:"
  
  With Form1
    .Show
    .Top = Screen.Height / 2
    .Left = (Screen.Width - .Width) / 2
  End With
  
  With Me
   .Left = Form1.Left
   .Top = Form1.Top - .Height
  End With
End Sub

Private Sub Form_Unload(Cancel As Integer)
  Unload Form1
End Sub

Private Sub Command1_Click()
  On Error Resume Next
  Winsock1.Connect Text2.Text, CInt(Text1.Text)
  
  Awaiting = True
  If WaitForResponse Then
    Label1.Caption = "Verbunden, bereit"
    Command1.Enabled = False
  Else
    MsgBox ("Konnte keine Verbindung zum Server hestellen")
    Winsock1.Close
  End If
  Awaiting = False
End Sub

Private Sub Drive1_Change()
  Dir1.Path = Drive1.Drive
End Sub

Private Sub Dir1_Change()
  Dim AA$
  
    AA = Dir1.Path
    If Right$(AA, 1) <> "\" And Right$(AA, 1) <> "/" Then
      AA = AA & "\"
    End If
    Label8.Caption = AA
    File1.Path = Dir1.Path
End Sub

Private Sub Timer1_Timer()
  If Timer - Start > ResponseTimeOut Then
    TimeOut = True
    OkFlag = False
  End If
End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
  Dim Data() As Byte
  Dim AA$, BB$, x&, d As Single
  Static Rec As Boolean
  Static TotalLen&
  Static IsLen&
  Static FN%
  Static TM As Single
 
    Winsock1.GetData Data, vbString
    If Awaiting Then
      If Data(0) = 77 Then OkFlag = False
    Else
      If UBound(Data) = 273 And Not Rec Then
        For x = 0 To UBound(Data)
          AA = AA & Chr$(Data(x))
        Next x
        
        If Left$(AA, 9) = "New Data|" Then
          TotalLen = CLng("&H" & Mid$(AA, 10, 8))
          If TotalLen <> 0 Then
            BB = Trim$(Mid$(AA, 18))
            Label1.Caption = "Empfange die Datei " & Chr$(34) & _
                             BB & Chr$(34)
                             
            Label4.Caption = Int((TotalLen / 1024) * 10) / 10 & _
                             " kB"
                             
            Call Dir1_Change
            Label8.Caption = Label8.Caption & BB
            TM = Timer
            Call Disable
          Else
            TotalLen = 0
          End If
        End If
        
        If TotalLen <> 0 Then
          Winsock1.SendData 77
          Rec = True
          FN = FreeFile
          IsLen = 0
          If Dir$(Label8.Caption) <> "" Then
            Kill Label8.Caption
          End If
          Open Label8.Caption For Binary As #FN
        End If
      ElseIf Rec Then
        Put #FN, , Data
        IsLen = IsLen + UBound(Data) + 1
        
        d = (Timer - TM)
        If d <> 0 Then Label3.Caption = Int(IsLen / 1024 / _
                                        d * 10) / 10 & " kB/Sec"
           
        Call ProgressBar(IsLen, 0, TotalLen)
        If IsLen = TotalLen Then
          Close FN
          MsgBox ("Übertragung erfolgreich beendet!")
          Call ProgressBar(0, 0, TotalLen)
          Rec = False
          Call Enable
          TotalLen = 0
          File1.Refresh
          BB = LastPath(Label8.Caption)
          If File1.ListCount > 0 Then
            For x = 0 To File1.ListCount - 1
              If File1.List(x) = BB Then
                File1.ListIndex = x
                Exit For
              End If
            Next x
            Label1.Caption = "Verbunden, bereit"
          End If
        End If
        Winsock1.SendData 77
      End If
    End If
End Sub

Private Sub ProgressBar(ByVal Prg&, ByVal Min&, ByVal Max&)
  Dim Fx&
  Static LastX
    If Prg < Min Or Prg > Max Or Max <= Min Then Exit Sub
    Prg = Int(100 / (Max - Min) * (Prg - Min))
    With Picture1
      
      If Prg > 0 Then
        If Prg <> LastX Then
          Picture1.Cls
          Fx = (Picture1.ScaleWidth - 2) / 100 * Prg
          Picture1.Line (0, 0)-(Fx + 1, Picture1.ScaleHeight _
                        - 1), &H8000000D, BF
                        
          .CurrentX = Fx + 3
          .CurrentY = 0
          Picture1.Print Trim$(CStr(Prg) & " %")
          LastX = Prg
        End If
      Else
        Picture1.Cls
      End If
    End With
End Sub

Private Function WaitForResponse() As Boolean
  OkFlag = True
  TimeOut = False
  Start = Timer
  Timer1.Enabled = True
  Do While OkFlag
    DoEvents
  Loop
  If Not TimeOut Then WaitForResponse = True
  Timer1.Enabled = False
End Function

Private Function LastPath(ByVal Path$) As String
   Dim AA$, BB$, x&
     For x = Len(Path) To 1 Step -1
       AA = Mid$(Path, x, 1)
       If AA = "/" Or AA = "\" Then
         Exit For
       Else
         BB = AA & BB
       End If
     Next x
     LastPath = BB
End Function

Private Sub Disable()
  Text1.Enabled = False
  Text2.Enabled = False
  Dir1.Enabled = False
  Drive1.Enabled = False
  MousePointer = vbHourglass
End Sub

Private Sub Enable()
  Text1.Enabled = True
  Text2.Enabled = True
  Dir1.Enabled = True
  Drive1.Enabled = True
  MousePointer = vbDefault
End Sub
'---------- Ende Formular "Form2" alias Form2.frm  ----------
'-------------- Ende Projektdatei Project1.vbp --------------

Tipp-Kompatibilität:

Windows/VB-VersionWin32sWin95Win98WinMEWinNT4Win2000WinXP
VB4
VB5
VB6

Hat dieser Tipp auf Ihrem Betriebsystem und mit Ihrer VB-Version funktioniert?

Ja, funktioniert!

Nein, funktioniert nicht bei mir!

VB-Version:

Windows-Version:

Ihre Meinung  

Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.

Archivierte Nutzerkommentare 

Klicken Sie diesen Text an, wenn Sie die 34 archivierten Kommentare ansehen möchten.
Diese stammen noch von der Zeit, als es noch keine direkte Forenunterstützung für Fragen und Kommentare zu einzelnen Artikeln gab.
Aus Gründen der Vollständigkeit können Sie sich die ausgeblendeten Kommentare zu diesem Artikel aber gerne weiterhin ansehen.

Kommentar von some12079 am 25.07.2006 um 21:39

am einlesen der daten hackts bestimmt nicht
es ist TCP was das problem ist
also wie folgt:
rechner B sendet ein paket zu rechner B
TCP verlangt hier das Rechner B die ankunft des paktes Rechner A mitteilt wo dürch folgendes passiert:
der ping (also die übertragungszeit) zum internet ist zwischen jedem client zB 60ms macht also von client zu client 120 ms (=0,12sec.) -> 8 packete/s im beispiel wären das dann 16kbyte/s - d stimmt doch was nich , richtig die übertragungszeit wächst mit der größe des packetes ..
macht mal
ping google.de -l 32
ping google.de -l 1400
-l 2000 geht schon gar nicht weil da das IPPacket kleiner ist

Kommentar von Mathew Jumper am 16.04.2006 um 13:31

Hallo,
das einzige Problem an dem Projekt ist, dass das Laden von Dateien mit Open und Close so lange dauert (bei großen Dateien).

Kommentar von Kaeptn Perpf am 04.09.2005 um 13:48

Hallo nun mal ein Tip von mir...
versucht´s doch mal mit dem Debugger..der wird Euch hervoragende Dienste leisten, bevor der Autor hier angemacht wird. Es wäre zwar schon besser in einem Tutorial, wenn das mit ein paar Kommentaren versehen wäre, aber immerhin haben wir hier die Möglichkeit mal in den Quell-Code reinzuschauen.

Kommentar von Kevin am 20.02.2005 um 10:26

WOW hammer geiles programm

Kommentar von bluedead007 am 03.10.2004 um 18:48

Hallo, suche ein ganz ganz einfaches Beispiel kann mir jemand Helen wo finde ich eins ich habe mich bei google tot gesucht und immer nur so große projekte gefunden muss doch auch in ein paar zeilen möglcih sein danke für die hilfe

Kommentar von Matthias am 24.09.2004 um 20:05

Nicht schlecht, aber geht das nicht einfacher?

Kommentar von VB Newbie am 17.05.2004 um 00:14

Ich finde, dass dieser Code viel zu komplex ist für ein beispiel. Da ist soviel unwichtiges Zeugs drin.
Ich habe versucht das in ein Programm einzubinden, ohne Erfolg. Als ich das mal selber probiert habe, habe ich herausgefunden, dass das eigentlich sehr einfach ist.

Kommentar von MyD am 29.04.2004 um 22:27

Also der Code ist recht und gut

nur gibt es keine möglichkeit, dass hier mal jemand den code vereinfacht und ihn mir ggf. mal zukommenlassen könnte? Das wäre verdammt nett! Der Code muss net schwer oder umfangreich sein - einfach primitiv =) das man ihn wenigstens bisschen verstehen kann!

Vielen Dank im voraus - MFG MyD!

Kommentar von Mark G am 09.02.2004 um 12:46

@ Chris:

Die Maximale Paketgröße ist im Netzwerk meißt auf ungefähr 8 KB begrenzt, was schon sehr viel ist ... Du hast anscheinent die Aufteilungs- und zusammenstrick mechanismen ausgebaut. Das Programm muss von sich aus, die Pakete zusammenflicken. Ich hoffe du hast verstanden was ich mein.

mfg Mark

Kommentar von Killalot am 29.01.2004 um 16:28

hi, ich hab mal das grungerüst ausm programm gefiltert, und hab versucht ne datei per winsock zu kopieren(sck sendet an sck2 und sck2 speichert datei ab), leider kommt am ande immier eine datei raus, die nur 8 Kb gross ist, und ich hab keine ahnung warum....
das ist der sourcecode, würd mich sehr freuen ne antowrt zu bekommen
(email: sirkillalothh@web.de)
mFg
Killalot
code auch zu finden unter http://nopaste.php-q.net/37516

Private Sub Command1_Click()
Const ChunkSize = 1024
Dim Data() As Byte
ReDim Data(1 To ChunkSize) As Byte
fdf = FreeFile
Open txtSend.Text For Binary As #fdf
Dim i%
For i = 1 To LOF(fdf) \ ChunkSize
Get #fdf, , Data
'(i * ChunkSize) - ChunkSize
sock.SendData Data
Next i
If LOF(fdf) Mod ChunkSize <> 0 Then
ReDim Data(1 To LOF(fdf) Mod ChunkSize) As Byte
Get #fdf, , Data
'Get filn, (Bsenden * 4096) - 4095, BData
sock.SendData Data
End If



End Sub

Private Sub Form_Load()
sock2.LocalPort = 4919
sock2.Listen
End Sub


Private Sub sock2_ConnectionRequest(ByVal requestID As Long)
If sock2.State <> sckClosed Then sock2.Close
sock2.Accept requestID
Connected = True
End Sub

Private Sub sock2_DataArrival(ByVal bytesTotal As Long)
Dim Data As String
sock2.GetData Data, vbString
ff = FreeFile
Open "c:\av2.exe" For Binary As #ff
Put #ff, , Data
End Sub

Kommentar von Christian am 13.01.2004 um 05:35

Hallo,

leider habe ich ein Problem. Wenn man zu schnell hintereinander Daten sendet, dann packt er die letzten Daten der ersten Datei, den "New Data"-String und die ersten Daten der neuen Datei in ein Paket und erkennt den neuen Dateianfang beim Empfangen nicht. Dann hat man eine Datei auf Platte (die Anzeige ist schon bei 200% etc.), inder alles hintereinander drin steht.

Habe halt automatisiert versucht mehrere Dateien zu senden... schade. Muss ich wohl eine Pause einbauen.

Außerdem gibt es manchmal das Problem, dass beim Sender alles erfolgreich angezeigt wird, beim Empfänger aber nur ca. 2/3 erfolgreich ankamen. Das hab ich bis heute nicht durchschaut ;).

MfG
Chris

Kommentar von MVXA am 10.09.2003 um 16:55

HI
Is gut das Beispielprogramm aber gewöhne dir an anständige namen für die Variablen zu geben und es tut nicht weh hin und wieder da und dort ein paar komentare zu machen. Ich will das ganze in mein programm einbauen und dabei habe ich jetzt schwierigkeiten den Code zu lesen.

Kommentar von Sentcool am 20.08.2003 um 18:49

tja da musst du entweder die firewall neu konfigurieren so dass sie das programm durchlässt .. oder du schaltest sie ab... und holst dir was besseres als den winxp dreck :) nimm zonealarm, die is gut für leute die nich so viel einstellen möchten... z.b. und die

Kommentar von duckhunter am 20.08.2003 um 18:46

Bei mir geht das Ding nur, wenn ich meine Firewall ausschalte. Was muss ich einstellen, damit es auch bei eingeschaltener Firewall geht (ich benutze die WinXP Firewall).

Danke
duckhunter

Kommentar von Deluxee am 29.07.2003 um 15:24

Bei mir funktioniert das Programm auch gut. Aber ich möchte das Programm vom Client aus Steuern! Der Server soll auf befehl eine Datei senden oder entfangen können und der soll auch sonst nichts als das Steuerelement und ggf. noch ein Timer besitzen!
Bei Server und Client soll alles auf eine Form beschränkt sein. Und am besten soll alles über ein Winsocksteuerelement laufen.

Ich hab schon versucht den Sourcecode der Formen zusammenzufassen aber dann funktionierte nichts mehr.

Schreibt bitte mögliche Lösungsvorschläge ins Forum!

Danke

*Christoph*

Kommentar von Sentcool am 29.03.2003 um 16:45

Der code funktioniert bei mir ganz gut...
leider kapier ich nich wirklich was genau dabei ab geht... kann mir mal jemand erklären was genau passiert wie die größe mit diesem HEX ermittelt wird und was das mit dem redim usw. und überhaupt was alles bedeutet?

cya
Sentcool

Kommentar von Firewalker2k am 15.01.2003 um 15:56

Tach,
das project geht aber ich habe mir eben von ein freund eine 10MB große datei schicken lassen was aber ziemlich langsam war, bis zu 6kb/s nur, er hat Hansenet DSL er hat ein Upload von 25kb/s und ich habe T-DSL also wäre das runterladen kein problem, kann ich die übertragung irgendwie beschleinigen?
MFG

Kommentar von hitman am 10.08.2002 um 17:57

Der Downloadlink funktioniert nicht.

Kommentar von Michael am 08.08.2002 um 19:28

also ich finde dieses programm ist irgendwie zu kompliziert gemacht. ich hab selebr schon erfahrung mit dem winsock und auch einmal so eine art file-sharing software fürs netzwerk gemacht, die war aber weit weniger kompliziert und auch verständlicher

Kommentar von Hendrik Jordt am 03.06.2002 um 09:30

@Mülli:
Was ist das denn hier für eine Ausdrucksweise? Wer pöbeln will, kann doch bitte in ein anderes Forum gehen. Danke!
@Flo:
Eigentlich funktioniert es auch ohne weitere Änderungen im GAN. Was aber beachtet werden sollte, ist das die meisten Ports und 100 reserviert sind. Z.B. 21 für FTP oer 80 für HTTP.
Gruss, H.Jordt

Kommentar von Flo am 29.05.2002 um 10:56

Hi,
Das Programm funktioniert bei mir optimal, solange ich es im Netzwerk benutze.
Muß ich irgendetwas besonderes beachten, wenn ich´s im Internet verwenden will (z.B.: bestimmten Port)?
Flo

Kommentar von Mülli am 14.05.2002 um 23:03

Du mongo musst das winsock steuerelement auch auf deine form bringen und ihm den namen "winsock1" geben.
meine güte denken vorm reden!
tipp: links hast so ne leiste wo auch zb das CmdButton-Element oder die Textbox sind. dort klickst auf die rechte maustaste-komponenten und suchst winsock, einen hacken setzen und ok. steuerelement auf die form bringen. Tata...

Kommentar von TwS|Predator am 10.05.2002 um 19:35

ist zwar schön und gut aba bei mir gehts nicht hab vb6 mit win98 der sagt mir variable "winsock1" nichtb defieniert!

Kommentar von Fightcock am 08.04.2002 um 19:57

Wie kann ich denn in einer winsock Umgebung einen screenshot aus der Zwichenablage direkt ohne eine Datei anzulegen übertragen?Schon jetzt vielen Dank im Vorraus.

Kommentar von Felix Geisendörfer am 26.01.2002 um 09:14

Sehr schöner Tipp mit gutem Grundgedanke. Aber eins nervt mich tierisch ... Das der ganze Tipp undokumentiert ist ... und das bei solch verwirrtenden Schleifen. Bis man da mal durchsieht kann man sich den Tipp auch fast selber ausdenken (ich denke mal das die Tipps hier dazu dienen sollen das man sie versteht neuschreibt und dann in sein Programm einbezieht und nicht alles markieren einfügen und alles unnötige ausdokumentieren) von daher wäre es echt gut wenn du deine Tipps in Zukunft dokumentieren bzw. kleine Anhaltspunkte geben könntest ...
cu
Felix Geisendörfer

Kommentar von Nicolai K. am 02.08.2001 um 09:22

Hi Joachim,
kein Wunder, der hat ja die Software auch nicht installiert. Lies dazu am besten Tipp 193.
Nicolai

Kommentar von Joachim Wöhler am 15.03.2001 um 16:03

Wie übertrage ich mit den Formularen eine Datei auf einen Server, auf dem Eine Seite von mir ist?
Jedesmal wenn ich die IP des Servers eintrage, und dann auf verbinde klicke, kommt die Meldung, daß eine Verbindung nicht hergestellt werden konnte.
Danke schon mal,
Joachim

Kommentar von chris am 25.02.2001 um 13:11

Ich habe mir mal das Beispiel herunter geladen. jetzt will ich gerne das man in meinem Programm ebenfalls daten versenden kann. nur leider kann man bei deinem programm den zielpfad nicht selber bestimmen. kannst du mir mal erklären, wie ich das machen kann? danke schon im voraus
chris

Kommentar von Rack Michael am 16.01.2001 um 19:33

Hi Programmer,
ich habe mir jetzt mal dein Programm angesehen.... Echt super ausgedacht... Nur, steige ich gerade erst in WinSock von VB6.0 ein.
Ich hatte schon einige Versuche gemacht, aber irgendwie funzen die Befehle net so.
Könntest du mir die Befehle, die du hier verwendest Detalieren?
Ich wäre dir sehr dankbar.
PS: Wie ließt du aus? Wieviel MB / KB du schon übertragen hast?
Ich kenn mich richtig gut aus in VB und erlernte alles durch Probieren, aber nach einer Woche, hast bestimmt auch du keinen Bock mehr, das selbst herauszufinden.
PS: Find ich echt super von Dir, dass du dich so mit VB beschäftigst und dein Wissen auch an andere mitteilst.
MfG
Rack Michael.

Kommentar von Götz Reinecke am 01.01.2001 um 21:55

Hallo Moosi, ich nehme mal an damit es bei Übertragungsraten

Kommentar von Moosi am 01.01.2001 um 21:49

Warum hat dieses Bsp. einen Fehler bei der Anzeige der Übertragungsrate, wenn man das On Error Resume next herauslöscht, "Division durch Null" ???
MFG,
Moosi

Kommentar von Mario Zeller am 01.12.2000 um 14:52

Hallo Thomas, ich glaube, es liegt daran, dass du auf dem anderen Rechner nicht 127.0.0.1 angeben darfst, da diese Adresse immer lokal ist. Gehe in die Dos-Eingabeaufforderung und finde mit "IPCONFIG" die richtige IP raus. Wenn du diese angibst, dann müsste es eigentlich klappen.

Kommentar von Götz Reinecke am 21.11.2000 um 15:16

Hallo Thomas, bei mir klappt das hervorragend, auch habe ich es vorher auf bestimmt 4 verschieden Rechnern getestet, was soll denn daran nicht funktionieren?

Kommentar von Thomas am 21.11.2000 um 15:07

Hallo
Ich habe ihr Beispiel "Dateien mit der Winsock übertragen
" aufprobiert. Es geht irgendwie nicht so ganz. Können sie mir das Programm nicht so machen, dass sich der Client mit dem Server (Ip:127.0.0.1) verbindet.
Können sie mir das Programm dann bitte schicken? Ich währe ihnen sehr dankbar. Danke im Vorraus.
Tschüß Thomas!