winsock file transfer hilfe

  • VB6

Es gibt 12 Antworten in diesem Thema. Der letzte Beitrag () ist von Pascal.

    winsock file transfer hilfe

    hi bin anfänger und versuche gerade mit winsock einen datei transfer

    zusammenzubringen
    er kopiert mir auch schon die datei incl. richtiger endung nur leider ist jede

    datei 1kb groß und ja - leer. hier der code


    der client:

    Private Sub Command1_Click()
    ws2.Close
    ws2.Connect Text1.Text, 42223
    End Sub


    Private Sub Command4_Click()
    ws2.SendData Text5.Text
    End Sub



    Private Sub ws2_DataArrival(ByVal bytesTotal As Long)
    Dim Ziel As String
    Dim dat1 As Byte
    Dim dat2 As String

    Ziel = Text5.Text
    dat2 = "D:\CopyRAT\ratfile" & Right$(Ziel, 4)
    ws2.GetData dat1

    pos = pos + 1

    Open dat2 For Binary Access Write As #2
    Seek #2, pos
    Put #2, , dat1
    Close #2
    End Sub



    der server:

    Private Sub Form_Load()

    ws2.LocalPort = 42223
    ws2.Close
    ws2.Listen


    End Sub



    End Sub

    Private Sub ws2_ConnectionRequest(ByVal requestID As Long)

    If ws2.State <> sckClosed Then ws2.Close
    ws2.Accept requestID
    End Sub


    Private Sub ws2_DataArrival(ByVal bytesTotal As Long)
    Dim data2 As String
    Dim sDat As Byte
    ws2.GetData data2

    'Datei puffern
    Open data2 For Binary Access Read As #1
    Do While Not EOF(1)
    Get #1, , sDat
    ws2.SendData sDat
    DoEvents
    Loop
    Close #1
    End Sub

    vielen dank im voraus

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „donsebastian“ ()

    dat2 = "D:\CopyRAT\trojanerkopie" & Right$(Ziel, 4)
    Ich hoffe doch stark, du hast nicht das vor, wonach es aussieht. Anscheinend sendest du nur den Datei-Pfad, du musst aber die komplette Datei senden, sprich mit Open im Binary-Modus öffnen und Byte für byte einlesen und senden...
    Gruß, Agent Smith 8-)

    activeFlags = (lazy OR weary)

    Lemgo-Verschwörung | Mathematics | VB-Paradise in blau

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Agent“ ()

    Visual Basic-Quellcode

    1. "D:\CopyRAT\trojanerkopie"


    Hihi, uns3r3 h4cking-fr34kz. k3wl. :D

    Du musst ans Ende der Datei schreiben. Mit Deinem Code wird "pos" um ein Byte erhöht. Der Standardpuffer ist (meines Wissens auch mit dem Winsock-Control) aber 1024.

    Code:

    Visual Basic-Quellcode

    1. Seek lngFF, LOF(lngFF) + 1


    lngFF = Long-wert für FreeFile

    Ansonsten kannst Du aus der API aber auch 'SetFilePointer' nutzen, das geht genauso.

    Ansonsten, klar Agent. Hab ich komplett übersehen. Du hast ja noch gar keinen Input zum senden und sendest demnach immer leere Puffer.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Pascal“ ()

    oh nein sry das ist nur weil ich mir den code von mehreren seiten zusammengestückelt habe ich bin absoluter anfänger....

    will nur eine datei kopieren können sonst nix aba vielen dank für die antworten werd das mal versuchen umzusetzen

    _____

    Open dat2 For Binary Access Write As #2 da öffne ich sie doch eh binär oder und danach schreib ich die beites rein bis die datei fertig ist ich versteh nicht warum das nicht funkt

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „donsebastian“ ()

    Sinnvoller ist es aber, den Code selber zu schreiben. Ich bin von reinen Lego-Anwendungen nicht sehr begeistert. Zum Einen weil man damit keine Programmiererfahrung sammeln kann und zum Anderen weil der geistige Ursprung von jemand anderem stammt. Daran kann man vielleicht Denkanstösse gewinnen, aber keine Anwendung.

    Wenn Du Fragen hast, ist das hier doch sehr willkommen.
    Cool eine Frage ohne Fragezeichen ;)

    Hast du schon genau debuggt woran es liegt? Kommen die Daten richitg per Winsock an? Wird die Datei an der richtigen Stelle beschrieben? Kommt eine Fehlermeldung? Wenn ja wo??
    Gruß, Agent Smith 8-)

    activeFlags = (lazy OR weary)

    Lemgo-Verschwörung | Mathematics | VB-Paradise in blau
    nein schau es kommt keine fehlermeldung er kopiert die datei mit der richtigen endung nur die datei ist immer leer!

    aba ich hab mal eine txt file probiert eine ziemlmich große und hab sie ein paar mal während dem vorgang geöffnet und es war immer ein anderer buchstabe bzw zeichen drinnen...

    ich kenn mich ja nicht aus aba ich vermute er kopiert es schon richtig nur überschreibt die bytes oder so kA nunja am ende ist jede file jedenfalls immer leer

    bitte das kann ja nicht so schwer sein datein übertragen mit winsock!!!! könnt ihr mir nicht zumindest ein gscheites tutorial geben und bitte nicht sagen google weil ich hab schon 5000 stunden gegoogelt es gibt kein gutes welches ich versteh...


    mfg sebastian
    Also so als Anstoß: Bei jedem Dateneintreffen, wird pos neu initialisiert also immer auf 0+1 gesetzt.
    Darüber hinaus würde ich noch einige Routinen für Prüfsummen und so einbringen, um evtl verlorengegangene oder fehlerhafte Teile nochmal zu senden.
    Gruß
    Peterfido

    Keine Unterstützung per PN!
    Darüber hinaus würde ich noch einige Routinen für Prüfsummen und so einbringen, um evtl verlorengegangene oder fehlerhafte Teile nochmal zu senden.
    Lass mal stecken ;)
    Ich glaub nicht, dass ihn das jetzt (schon) betrifft...
    Es geht ja noch nix.

    So... zu deinem problem...
    Wenn der Buffer tatsälich 1024 Byte (und nicht nur 1) groß ist, müsst zumindest irgendwas drin stehen; selbst wenn dus jedes mal überschreibst...

    ... wird pos neu initialisiert also immer auf 0+1 gesetzt.

    Das kannst du garnicht wissen :P
    Die Variable pos wird nämlich im gezeigten Code darnicht dekleriert.
    @ sebastian: Wo wird denn bei deinem Client pos dekleriert??
    Hm.. ist mir garnicht aufgefallen, dass der Thread schon so alt ist...
    Ich hab nur son schönes blaues Icon neben dem namen gesehen und drauf geklickt ^^

    Naja..
    Das erledigt das TCP schon
    Jo, klar SOLLTE TCP das abnehmen, bestes Beispiel ist aber Torrent... da bekommt man so viel choke, den das Programm übernehmen muss, dass man da zwingend eine Checksum braucht.
    Woran genau das liegt weiß niemand so genau ^^
    Bei Filesharing wird die Checksum meines Wissens primär erzeugt um parallel von verschiedenen Servern runterzuladen und, viel wichtiger, damit "Fakes" erkannt werden. Sprich: Malware, die mit einem Renner in der Downloadszene versehen ist.