Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [VB.NET] Client/Server - Inviare file
Forum - C# / VB.NET - [VB.NET] Client/Server - Inviare file

Pagine: [ 1 2 3 4 ] Precedente | Prossimo
Avatar
dedalux (Normal User)
Pro


Messaggi: 155
Iscritto: 14/02/2009

Segnala al moderatore
Postato alle 20:56
Venerdì, 17/07/2009
Salve a tutti,
come detto in precedenza, sto cercando di ambientarmi nell'ambiente delle socket creando una piu o meno semplice applicazione che faccia uso di TCPClient e Listener.

Per ora il mio client si connette al server, invia tutti i messaggi con relativa risposta da parte del server ecc..

Ora mi piacerebbe molto sapere come si fa ad inviare un file, ho pensato ad una cosa semplice, come un'immagine.
Sapendo che va trasformata l'immagine in un array di byte che dopo andranno inviati, ricevuti e riscritti in un file, ma nn come fare esattamente, ho cercato un po, e ahime ne sono uscito confuso, poiche ho letto qua e la che è una cosa complessa, e che spesso produce risultati negativi come file corrotti, spezzettati e/o incolpeti.

E' una cosa semplice o è ancora troppo presto?
Avreste qualche delucidazione da darmi?

Thx a tutti!


«La disumanità del computer sta nel fatto che, una volta programmato e messo in funzione, si comporta in maniera perfettamente onesta.»

Isaac Asimov
PM Quote
Avatar
riseofapocalypse (Ex-Member)
Pro


Messaggi: 150
Iscritto: 08/07/2009

Segnala al moderatore
Postato alle 21:09
Venerdì, 17/07/2009
Per leggere i Bytes del File usi:
Codice sorgente - presumibilmente C# / VB.NET

  1. Dim bytes() As Byte = IO.File.ReadAllBytes(filename)


E poi li invii col solito metodo di invio! :)
Invece quando devi ricevere, dopo aver salvato in un Array i Bytes ricevuti, puoi fare così:
Codice sorgente - presumibilmente Plain Text

  1. IO.File.WriteAllBytes(filename, bytes)


:k:


Mountain's man said no!
PM Quote
Avatar
dedalux (Normal User)
Pro


Messaggi: 155
Iscritto: 14/02/2009

Segnala al moderatore
Postato alle 21:16
Venerdì, 17/07/2009
Giusto scusami ho dimenticato una cosa: ovviamente client e server scambiano stringhe e files, ho letto in giro che x cosa che viene inviata serve un nuovo socket, ossia se invio una stringa utilizzo un determinato client e relativo server, per inviare un file devo crearne 2 di nuovi e utilizzare quelli...
E' vero?


«La disumanità del computer sta nel fatto che, una volta programmato e messo in funzione, si comporta in maniera perfettamente onesta.»

Isaac Asimov
PM Quote
Avatar
riseofapocalypse (Ex-Member)
Pro


Messaggi: 150
Iscritto: 08/07/2009

Segnala al moderatore
Postato alle 21:26
Venerdì, 17/07/2009
Assolutamente no! Devi solamente gestire le richeste in modo che Client e Server capiscano cosa si stanno scambiando, ad esempio se devi inviare un file da Client a Server fai così:
Codice sorgente - presumibilmente C# / VB.NET

  1. Client invia "file"
  2. Server invia "OK"
  3. Client invia Bytes del File
  4. Server invia "OK" e salva il file


Invece per i messaggi puoi fare così:
Codice sorgente - presumibilmente C# / VB.NET

  1. Client invia "msg"
  2. Server invia "OK"
  3. Client invia Bytes del messaggio
  4. Server invia "OK" e stampa il messaggio


Io di solito faccio qualcosa del genere! :k:


Mountain's man said no!
PM Quote
Avatar
dedalux (Normal User)
Pro


Messaggi: 155
Iscritto: 14/02/2009

Segnala al moderatore
Postato alle 21:39
Venerdì, 17/07/2009
Quindi per fargli capire cosa invio basta che glielo dico prima?

Ma tipo quando il server riceve "file" che fa?
Io farei che lo salva in una variabile e ricevuti i byte della stringa/file, in base al valore di questa variabile esegue il WriteAllBytes o la modifica della textbox...

C'è un altro modo?

Ultima modifica effettuata da dedalux il 17/07/2009 alle 21:43


«La disumanità del computer sta nel fatto che, una volta programmato e messo in funzione, si comporta in maniera perfettamente onesta.»

Isaac Asimov
PM Quote
Avatar
riseofapocalypse (Ex-Member)
Pro


Messaggi: 150
Iscritto: 08/07/2009

Segnala al moderatore
Postato alle 21:43
Venerdì, 17/07/2009
Hai capito perfettamente cosa intendo! E' un modo semplice e veloce di distinguere i dati :k:

Non ho capito cosa intendi tu però :rotfl: se il Client invia "file", il Server deve rispondere "OK" oppure "KO", in modo che se ci sono dei problemi si possa fermare :D

Ultima modifica effettuata da riseofapocalypse il 17/07/2009 alle 21:45


Mountain's man said no!
PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 21:51
Venerdì, 17/07/2009
Attenzione a questo modo di operare ... devi anche indicare la lunghezza del file (il numero di byte inviati) prima di inviarli, altrimenti potresti avere problemi durante la ricezione.


- Se le mie risposte non vi soddisfano, ignoratele, altrimenti un "grazie" e' molto gradito ...

"Dai un pesce (programma) a un uomo e lo nutrirai per un giorno. Insegnagli a pescare (programmare) e lo nutrirai per tutta la vita." (niente pappa pronta)
PM Quote
Avatar
riseofapocalypse (Ex-Member)
Pro


Messaggi: 150
Iscritto: 08/07/2009

Segnala al moderatore
Postato alle 21:54
Venerdì, 17/07/2009
Giusto, mi sono dimenticato di specificarlo :rotfl:


Mountain's man said no!
PM Quote
Avatar
dedalux (Normal User)
Pro


Messaggi: 155
Iscritto: 14/02/2009

Segnala al moderatore
Postato alle 21:59
Venerdì, 17/07/2009
Eh scusa ho editato il post perche praticamente avevo riscritto il tuo esempio, (gli avevo ddato un'interpretazione sbaglaita), cmq dato che sappiamo tutti che sono un principiante in quest'ambito, potresti farmi un esempio piccino piccino di come specificare la quantita di bytes? :rotfl:

Ultima modifica effettuata da dedalux il 17/07/2009 alle 22:00


«La disumanità del computer sta nel fatto che, una volta programmato e messo in funzione, si comporta in maniera perfettamente onesta.»

Isaac Asimov
PM Quote
Pagine: [ 1 2 3 4 ] Precedente | Prossimo