Invia/Ricevi File, Tra due computer

« Older   Newer »
  Share  
MatteoJug
CAT_IMG Posted on 31/5/2008, 16:05     +1   -1




Su richiesta di I.Ren, ecco un UDF che consente di Inviare e Ricevere file tra due computer.
Ecco l'UDF:
CODICE
Func _InviaFile($sIp,$iPort,$sFile,$sRemotePerc,$bVisibile=False)
       if not FileExists($sFile) then Return -1
       $File_h=FileOpen($sFile,16)
       $File_read=FileRead($File_h)
       TCPStartup()
       $Socket=TCPConnect($sIp,$iPort)
       if $Socket=-1 then Return -1
       $Rec=TCPRecv($Socket,0x1000)
       While $Rec=""
               $Rec=TCPRecv($Socket,0x1000)
       WEnd
       if $Rec<>"!OK FILE" then Return -1
       TCPSend($Socket,"FILE " & $sRemotePerc)
       $Rec=TCPRecv($Socket,0x1000)
       While $Rec=""
               $Rec=TCPRecv($Socket,0x1000)
       WEnd
       if $Rec<>"!OK FILE" then Return -1
       $Block=_StringInBlock(String($File_read),0x1000)
       for $i=1 to $Block[0]
               if $bVisibile=True then SplashTextOn("Invio del file","Invio del File: parte " & $i & " su " & $Block[0])
               TCPSend($Socket,$Block[$i])
               $Rec=TCPRecv($Socket,0x1000)
               While $Rec=""
                       $Rec=TCPRecv($Socket,0x1000)
               WEnd
               if $Rec<>"!OK P" then Return -1
       Next
       SplashOff()
       TCPSend($Socket,"!END")
       TCPCloseSocket($Socket)
       TCPShutdown()
       Return 1
EndFunc
Func _RiceviFile($iPort,$iVisibile=False)
       TCPStartup()
       $Main=TCPListen(@IPAddress1,$iPort)
       $Socket=TCPAccept($Main)
       While $Socket=-1
               $Socket=TCPAccept($Main)
       WEnd
       TCPSend($Socket,"!OK FILE")
       $Rec=TCPRecv($Socket,0x1000)
       While $Rec=""
               $Rec=TCPRecv($Socket,0x1000)
       WEnd
       $File_Dir=StringTrimLeft($Rec,5)
       if StringLeft($File_Dir,1)="!" then $File_Dir=Execute(StringTrimLeft($File_Dir,1))
       TCPSend($Socket,"!OK FILE")
       $File_R=''
       While 1
               $Rec_2=TCPRecv($Socket,0x1000)
               While $Rec_2=""
                       $Rec_2=TCPRecv($Socket,0x1000)
               WEnd
               if $Rec_2="!END" then ExitLoop
               TCPSend($Socket,"!OK P")
               $File_R&=$Rec_2
       WEnd
       FileDelete($File_Dir)
       FileWrite($File_Dir,Binary($File_R))
       TCPCloseSocket($Main)
       TCPShutdown()
       if $iVisibile=True then MsgBox(0,"Ricezione file","File ricevuto con successo." & @CRLF & "Salvato in:" & $File_Dir)
       Return 1
EndFunc
Func _StringInBlock($sString,$nBlock)
       dim $aRet[Int(StringLen($sString)/$nBlock)+2]=[Int(StringLen($sString)/$nBlock)+1]
       if IsInt(Number(StringLen($sString))/Number($nBlock)) then dim $aRet[Int(StringLen($sString)/$nBlock)+1]=[Int(StringLen($sString)/$nBlock)]
       for $i_=1 to $aRet[0]
               if $i_=$aRet[0] then
                       $aRet[$i_]=StringMid($sString,$nBlock*($i_-1)+1)
               Else
                       $aRet[$i_]=StringMid($sString,$nBlock*($i_-1)+1,$nBlock)
               EndIf
       next
       Return $aRet
EndFunc

Se si verificano errori, ritorna -1.
Avviare prima il _RiceviFile(), poi l'_InviaFile().

Esempio:
Server:
CODICE
#include <Invia-ricevi file.au3>
_RiceviFile(1001,True)

Client:
CODICE
#include <Invia-ricevi file.au3>
_InviaFile(@IPAddress1,1001,"C:/WINDOWS/system32/oobe/images/merlin.gif","C:/imm_oboe.gif",True)



Ditemi che ne pensate :D :D

Edited by MatteoJug - 31/5/2008, 18:42
 
Top
I.Ren
CAT_IMG Posted on 31/5/2008, 16:14     +1   -1




io dico sl ke sei 1 mito!!!!!!!!!!!! potresti mettere 1 esempio?
 
Top
I.Ren
CAT_IMG Posted on 31/5/2008, 17:14     +1   -1




ummm.. nn funzia il ricevi file. metti 1 esempio plz
 
Top
MatteoJug
CAT_IMG Posted on 31/5/2008, 17:43     +1   -1




UP
 
Top
I.Ren
CAT_IMG Posted on 31/5/2008, 17:51     +1   -1




kkk ora ho capito cm far funzionare tt..

matteo 6 1 genio.

xrò mi dovresti dire cm implementarla cn la chat.. plz! ;(
 
Top
MatteoJug
CAT_IMG Posted on 31/5/2008, 17:54     +1   -1




La chat la basi sugli IP o su cos'altro?
 
Top
I.Ren
CAT_IMG Posted on 31/5/2008, 18:08     +1   -1




CITAZIONE
La chat la basi sugli IP o su cos'altro?

è chiaro ke si basa sugli ip!

scarica lo zip e sistemalo plz!

Download attachment
cht.rar ( Number of downloads: 25 )

 
Top
lknokl
CAT_IMG Posted on 2/6/2008, 10:39     +1   -1




fantastico ^^ sicuramente finira anke questa nei miei include ^^
 
Top
¤Uriel¤
CAT_IMG Posted on 8/6/2008, 15:19     +1   -1




Non ho capito come funziona, qualcuno me lo potrebbe spiegare pls...
 
Top
MatteoJug
CAT_IMG Posted on 8/6/2008, 22:17     +1   -1




Per la "mini-spiegazione", vai qui: https://autoit.forumcommunity.net/?t=16036330,
Se ti serve qualche info in particolare, chiedi pure ;)
 
Top
9 replies since 31/5/2008, 16:05   478 views
  Share