Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 23

Discussione: [VB] "Chat + SendFile"

  1. #1

    [VB] "Chat + SendFile"

    Ho realizzato una chat in VB, e ho deciso di inserirgli anche la funzione che permetta di scambiare i file.
    Con i file "txt" ci sono riuscito, molto semplice ma se voglio inviare file di formato binario("exe"..)???

    Ho pensato:

    'CODE:

    Private Type Record
    ID As Integer
    Name As String * 20
    End Type

    Function Send_File()
    Dim Rec As Record, Len
    f = FreeFile
    Open "C:\WINDOWS\DESKTOP\b.exe" For Binary As f
    'Per inviare solo il primo blocco:
    Len = 1
    Get f, Len, Rec
    ws.SendData Rec
    Close f

    End Function



    'MI COMPARE UN MESSAGGIO CHE DICE:

    'Solo i tipi definiti dall' utente in moduli di oggetto pubblici
    'possono essere assegnati a o da una variabile Variant oppure passati
    'a funzioni per cui è prevista l' associazzione tardiva.

    'Mi date una zampa????? Grazie a tutti ciao!


    jabjoint

  2. #2
    Se nn mi date un aiuto nn riesco + ad andare avanti. Vi prego!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !12
    jabjoint

  3. #3
    Utente bannato
    Registrato dal
    Apr 2002
    Messaggi
    546
    prova a fare così:

    Dim Rec As String
    Open "C:\WINDOWS\DESKTOP\b.exe" For Binary As #1
    Get #1, , Rec
    ws.SendData Rec
    DoEvents
    close #1


    link
    homepage
    http://%77%77%77%2e%74%77%6f%72%6b%2e%69%74/
    software
    http://%77%77%77%2e%74%77%6f%72%6b%2...programmi.html
    forum
    http://%77%77%77%2e%74%77%6f%72%6b%2...um/default.asp

  4. #4

    funziona????

    'Questo funzionasolo con alcuni file di windows(control.exe,winhelp.exe) ed un file fatto da me in pascal
    tutti i file sono di dimensioni piccole. Sapete spiegarmi perchè solo con questi?

    Function SendFile()
    Dim strBuffer As String
    Dim lngFreeFile As String
    lngFreeFile = FreeFile
    Open Dialog.FileName For Binary As lngFreeFile
    Do Until EOF(lngFreeFile)
    strBuffer = Space$(8192)
    Get lngFreeFile, , strBuffer
    ws.SendData strBuffer
    Loop
    Close #lngFreeFile
    End Function

    Per ricevere uso questo codice:

    Set fso = CreateObject("Scripting.FileSystemObject")
    Set nF = fso.CreateTextFile("C:\NEW_FILE_CHAT.EXE")
    nF.Write receive
    nF.Close
    Text1.Text = Text1.Text & "FILE RICEVUTO." & vbCrLf
    jabjoint

  5. #5
    Praticamente mi aggiunge l' ultimo pezzo degli altri file quelli + grossi quindi dovrei sommare gli strBuffer non so come! Sapete?
    jabjoint

  6. #6
    Scusate per l' ignoranza adesso ho capito come si fà.
    jabjoint

  7. #7
    Che massima dimensione posso inviare con "SENDDATA"?
    jabjoint

  8. #8
    Utente bannato
    Registrato dal
    Apr 2002
    Messaggi
    546
    Comunque fai sempre sapere se quello che ti posto è stato valido o no!!!!!! perlomeno sapere se quello che ti ho postato era giusto, come apertura di file sono sicuro di si.........

    prima di aprire il file devi sapere la lunghezza del file così:
    e spedire il primo blocco e poi ancora il secondo ecc, ecc
    vorrei sapere se ti è stato di aiuto......

    così è come faccio io......tu adattalo alle tue esigenze

    Dim Rec As String
    DstPath="C:\WINDOWS\DESKTOP\b.exe"

    LnFile = FileLen(DstPath)
    If LnFile > 8192 Then
    nLoop = Fix(LnFile / 8192)
    nRemain = LnFile Mod 8192
    Else
    nLoop = 0
    nRemain = LnFile
    End If
    'apri il file

    Open DstPath For Binary As #1
    For Cn = 1 To nLoop
    Rec= String(8192, " ")
    Get #1, , Rec
    Wws.SendData Rec
    DoEvents
    next
    close #1
    If nRemain > 0 Then
    Rec = String(nRemain, " ")

    Exit Sub
    Get #1, , Rec
    ws.SendData Rec
    DoEvents

    End If
    Close #1
    ws.Close
    ws.Listen
    -------------------------------------------------

    questa è la parte client.........se tutto è ok, ci risentiamo per la parte server, in quanto nel loop sopra di richiesta client, devi ritornare par prendere il secondo blocco.............

  9. #9
    Grazie e scusa se non l' ho provato perchè ho già risolto con un altro codice per la parte client. Sono incasinato nel ricevere.
    Il mio client è cosi:

    {

    Dim Size As Long
    Dim strBuffer As String

    Set fso = CreateObject("Scripting.FileSystemObject")
    Size = fso.GetFile(Dialog.FileName).Size
    Dim lngFreeFile As String
    lngFreeFile = FreeFile
    Open Dialog.FileName For Binary As lngFreeFile
    Do Until EOF(lngFreeFile)
    strBuffer = Space$(Size + 1)
    Get lngFreeFile, , strBuffer
    ws.SendData strBuffer
    Loop
    Close #lngFreeFile

    }

    Quando ricevo però se all' inizio della funzione di ricezione scrivo
    MsgBox "BytesTotal" lui mi restituisce varie lunghezze tra le quali la lunghezza del (file + 1)
    Il mio problema ora sta nel prendere i valore di bytes + grande che è quello che mi interessa.


    ************************************************
    Sapresti come prendere il valore maggiore ??? *
    ************************************************

    poi posso continuare il codice cosi:

    If lngMax = bytesTotal Then
    ....
    end if

    'Cosi risolverei quasi tutti i miei problemi!
    Mi Mancherebbe ancora il nome del file che gli assegnerò' al nuovo(quello che crea il server). Come faccio a ricavarlo? Devo perforza inviarlo????
    jabjoint

  10. #10
    Steno se ti fa piacere ho deciso di usare il tuo codice.
    Non so se l' ho capito bene ma...
    Per lo meno io ho capito che invii 8192 byte alla volta fino alla fine del file. Io mi ostinavo ad inviarli in un blocco solo.

    Il problema è che non riesco a ricevere i dati.
    Come posso ricevere i dati inviati?
    questo è il codice che ho infilato nella Data_Arrived:
    x = FreeFile
    Open "C:\WINDOWS\DESKTOP\New.exe" For Binary As x
    Put x, , receive
    Close x

    Poi volevo chiederti se una volta ricevuto il file al posto di "New.txt" si poteva mettere il nome del file di origine.
    Comunque questo è di secondaria importanza.

    Grazie!
    jabjoint

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.