Oppure

Loading
11/07/11 19:48
Milmor94
Salve a tutti... Vorrei sapere come si invia un'immagine (sotto forma di byte) da un programma client a un server tramite Winsock.

In pratica il server invia una richiesta al client in una rete lan. Questo a sua volta cattura un'istantanea dello schermo, la converte in byte e ritorna i dati al server.
Ecco qui i problemi:
1) I byte effettivamente rimandati al server risultano notevolmente meno
2) (di conseguenza) il programma non riesce a visualizzare l'immagine

CLIENT: invio dell'istantanea schermo
Dim Bytes() As Byte = IO.File.ReadAllBytes(PercorsoIstantaneaSchermo)
AxWinsock1.SendData(Bytes)

SERVER: ricezione e conversione delle informazioni
Private Sub AxWinsock1_DataArrival
Dim Bytes(CInt(ms.Length - 1)) As Byte

AxWinsock1.GetData(Bytes, 0, e.bytesTotal)

IO.File.WriteAllBytes(Percorso di salvataggio, Bytes)
PictureBox1.Image = Bitmap.FromStream(New IO.MemoryStream(Bytes), True, False)
End Sub
aaa
11/07/11 20:13
I dati ricevuti dalla rete nella DataArrival, non arrivano necessariamente tutti in una sola volta, anzi ...

L'evento può essere richiamato più volte ad indicare che i dati arrivano in varie parti, anche se nell'ordine corretto.

Deve essere il tuo programma a ricostruire i dati.

Inoltre, non ha senso usare il controllo Winsock con .NET ...
12/07/11 8:31
Il Totem
Per l'ennesima volta, .NET <-> Socket. Non dovresti usare AxWinsock.

Comunque sembra più difficile di quanto in realtà non sia. E' sufficiente inviare un header iniziale che contenga la lunghezza del file, letto il quale saprai esattamente quanti byte riunire.
aaa