für alle die, die Bentschi's neue Socket Class: http://www.autohotkey.com/board/topic/9 ... rarbeitet/
nutzen und eine Funktion für das Senden einer Datei vermissen, habe ich mal eine kleine Erweiterungen geschrieben.
SendFilePackages()
RecvFilePackages()
Code: Select all
SendFilePackages(filepath, package_size=1024)
{
FileObj := fileopen( filepath, "r")
VarSetCapacity(buf, FileObj.length)
FileObj.RawRead(&buf, FileObj.length)
Stringsplit, filepath, filepath, \
filename := filepath%filepath0% ; Dateiname Rausfiltern
len := FileObj.length
pos := &buf
this.sendText(filename ":" len ":" package_size) ; Header
this.recvText()
while (len>0)
{
current_len := (len>=package_size) ? package_size : len
this.send(pos, current_len)
len -= current_len
pos += current_len
this.recvText()
}
FileObj.close()
}
RecvFilePackages(filepath="")
{
Header := this.recvText()
Stringsplit, Header, Header, :
num_packages := Ceil(Header2/Header3) ; Anzahl der Packete aufgerundet
If (filepath = "")
{
IfExist, %A_Scriptdir%\%Header1%
filepath := A_Scriptdir "\" "Kopie von " Header1
else
filepath := A_Scriptdir "\" Header1
}
else
{
filepath := filepath "\" Header1
}
FileObj := fileopen(filepath, "w")
this.sendText("#")
Loop, % num_packages
{
len := this.recv(buffer)
FileObj.RawWrite(&buffer, len)
If (A_Index = num_packages)
{
FileObj.close()
}
this.sendText("#")
}
}
Obwohl 8192KB theoretisch möglich wären, kommt es aber dann zu Fehlern.
Vielleicht kann es ja jemand gebrauchen.