LAN Dateien versenden

Du solltest die Dateien natürlich beim Client liegen lassen. Stell dir vor, jemand gibt eine 2 GB große Datei frei! Dann wäre das Netzwerk erst mal lahmgelegt ^^.
Desweiteren musst du dir das so vorstellen: ein String besteht aus mehreren Zeichen. Jedem Zeichen kann dabei eine eindeutige Nummer von 0 bis 255 zugeteilt werden (es sei denn du programmierst fürs chinesische Windows, dann sinds mehr). (Die Nummern kannst du dir mit der Funktion "vba.Asc(Zeichen)" ausgeben lassen, zu der Funktion gibt es auch tausende von Threads.) Diese Nummer heißt ASCII-Zeichen. Nun ist es so, dass wenn du eine Datei byteweise einließt jedes Byte logischerweise einen Wert von 0 bis 255 annehmen kann (sonst wäre es ja kein Byte).
Und vielleicht klingelt es nun bei dir...
Du ließt also ein Byte der Datei ein und erhälst somit eine Zahl. Diese wandelst du nun in ein Zeichen (dafür gibt es die Funktion "vba.Chr$(Zeichennummer)") und sendest dieses Zeichen als String so wie du es aus einem Chat gewohnt bist an den Empfänger. Der muss die Zeichen dann halt wieder mit "vba.Asc(Zeichen)" in ein Byte zurückwandeln und in eine Datei schreiben.

Das dauert aber recht lange. Deswegen könntest du gleich mehrere Verbindungen zu dem Empfänger aufbauen, indem du mehrere Winsock-Controls lädst. Ich würde dir aber vorschlagen, es erst mal mit einer Verbindung zu probieren. Wenn du das geschafft hast kannst du dir was wegen der Geschwindigkeit überlegen.
 
Ich habe mal ne ganz blöde Frage!
Wie kann ich es machen, dass man z.B. auf einen Command Button drückt und dann dieses Windows Dialog angezeigt bekommt, wo man eine datei auswählen kann?
 
Entweder Windows API Funktion
Code:
Private Declare Function GetOpenFileName Lib "comdlg32.dll" _
  Alias "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) _
  As Long

Oder Du bindest dir unter Projekt -> Komponenten das "Microsoft Common Dialog Control X" ein und zieht dir das OpenFileDialog Control auf dein Formular.
 
Code:
Option Explicit
Dim Datei1 As Byte

Private Sub Command1_Click()
Dim DateiNr As Integer
DateiNr = FreeFile
With CommonDialog1
.ShowOpen
If Err.Number = 0 Then
Open .FileName For Binary Access Read As #DateiNr
Input #DateiNr, Datei1
Close DateiNr
End If
End With
End Sub

Dies ist mein bisjetziger Code!
Ich weiß nicht wo und wie ich es einbauen soll, dass der Code die Datei in einen String verwndelt! :(
 
Ich bin jetzt schon ein wenig weiter gekommen, aber richtig funktionieren tut es immer noch nicht!

Vielleicht könnt ihr ja mal drüberschauen! ^^
 

Anhänge

  • Test.zip
    2,4 KB · Aufrufe: 18

Neue Beiträge

Zurück