Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Visual Basic 6 - Problema invio immagine con winsock....
Forum - Visual Basic 6 - Problema invio immagine con winsock....

Avatar
luca94 (Normal User)
Pro


Messaggi: 71
Iscritto: 07/05/2008

Segnala al moderatore
Postato alle 19:52
Sabato, 14/02/2009
Salve a tutti,
premetto che già ho letto tutte le discussioni riduardanti quest' argomento, su questo forum. Ma non hanno risolto il mio problema che è il seguente:
allora vorrei sapere cosa c'è di sbagliato in questo codice:
Server:
Codice sorgente - presumibilmente VB.NET

  1. Private Sub Form_Load()
  2. Winsock1.Listen
  3. End Sub
  4.  
  5. Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
  6. Dim c As Byte
  7. Winsock1.GetData c
  8. Open ("C:\aaaaaaaa.jpg") For Binary As #1
  9. Put #1, , c
  10. Close #1
  11. End Sub
  12.  
  13. Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
  14. If Winsock1.State <> sckClosed Then Winsock1.Close
  15. Winsock1.Accept requestID
  16. End Sub


Client:
Codice sorgente - presumibilmente VB.NET

  1. Private Sub Command1_Click()
  2. Dim c As Byte
  3. Open ("C:\img.jpg") For Binary As #1
  4. While Not EOF(1)
  5. Get 1, , c
  6. Winsock1.SendData c
  7. DoEvents
  8. Wend
  9. Close #1
  10. End Sub
  11.  
  12. Private Sub Form_Load()
  13. Dim x As String
  14. x = Text1.Text
  15. Winsock1.Connect x, "10"
  16. End Sub


Il problema nn è nella connessione ma nell' immagine che viene creata dal server, non è buona...
Grazie in anticipo...

PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 20:23
Sabato, 14/02/2009
Testo quotato

Postato originariamente da luca94:
vorrei sapere cosa c'è di sbagliato in questo codice



Praticamente tutto nel DataArrival del server.

In quell'evento arriva un flusso di dati che rappresenta il file (dal primo all'ultimo byte).

Se, ad ogni arrivo, tu apri il file e lo chiudi, non farai altro che sovrascrivere ogni volta i dati arrivati su quelli gia' scritti. In pratica, alla fine, avrai solamente l'ultimo blocco di dati inviati.

Inoltre, nel client, e' sbagliato inviare un byte alla volta.

PM Quote
Avatar
luca94 (Normal User)
Pro


Messaggi: 71
Iscritto: 07/05/2008

Segnala al moderatore
Postato alle 20:43
Sabato, 14/02/2009
E come andrebbe scritto il codice risolutivo?

PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 21:18
Sabato, 14/02/2009
Andrebbe scritto tenendo conto del fatto che il programma che riceve sa quando inizia il file, ma NON SA quando finisce perche' NON ne conosce la lunghezza.

Queste informazioni devono essere quindi inviate dal programma che invia, prima di inviare i dati veri e propri.

Pero', non ho assolutamente il tempo di scrivere tutto il codice corretto e testato. Dovrai farlo tu ... se hai altri problemi, posta.


PM Quote