.:ViRuS:. (Ex-Member)
Pro
Messaggi: 174
Iscritto: 01/06/2008
|
Ciao a tutti ragazzi ho un ENNESIMO stramaledettissimo problema col winsock U_U non ce la faccio più!!!!!
Praticamente ho usato un codice che invia 8000 bytes a botta, e il file da inviare è un img di 1,47 mb
Il trasferimento c'è... scrive i dati però invece di arrivare a 1.47 mb non si ferma mai!!! cioè è come se non ricevesse
Private Const chunk = 8192
Dim data
Open dlg1.filename For Binary As #1
Do While Not EOF(1)
data = Input(chunk, #1)
tcp.SenData data
pause 400
DoEvents
Loop
tcp.senddata "EndTransfer"
close #1
-.-" continua ancora... siamo a 13 mb di grandezza!!
Forse ho sbagliato io qualcosa nel codice che invia? perchè quello che riceve ha solo il compito di scrivere i dati..
PerFavore mi aiutate?
GRazie 1000!!!
|
|
GrG (Member)
Guru^2
Messaggi: 3430
Iscritto: 21/08/2007
|
La stringa "EndTransfer" arriva al server?
Ultima modifica effettuata da GrG il 26/07/2008 alle 10:28 |
|
.:ViRuS:. (Ex-Member)
Pro
Messaggi: 174
Iscritto: 01/06/2008
|
Si ad arrivare arriva... ma la esegue mooolto dopo... credo che sia nell'invio l'errore...
|
|
gantonio (Normal User)
Guru^2
Messaggi: 1532
Iscritto: 09/09/2007
|
Il problema e' nel codice che riceve ...
|
|
.:ViRuS:. (Ex-Member)
Pro
Messaggi: 174
Iscritto: 01/06/2008
|
Ecco allora il codice che riceve.. non credo ci siano errori...
Codice sorgente - presumibilmente VB.NET |
S = data V = Split(S, ",") If V(0) = "/ReceiveFile" Then Open App.Path & "\" & V(1) For Binary As #9 TCP.SendData "OK" End If S = data V = Split(S, "omfglol") Do Until V(0) = "/BinaryData" TCP.GetData data DoEvents Loop If V(0) = "/BinaryData" Then Put #9, , V(1) End If If data = "EndTransfer" Then Close #9 End If
|
GRazie dell'aiuto!!!
|
|
gantonio (Normal User)
Guru^2
Messaggi: 1532
Iscritto: 09/09/2007
|
Postato originariamente da .:ViRuS:.:
Ecco allora il codice che riceve.. non credo ci siano errori... |
Ma questo codice NON corrisponde a quello del client. Quindi, o hai modificato questo, o hai modificato quello del client.
Come si puo' leggere, il server si aspetta una stringa
/ReceiveFile
per iniziare la ricezione del file (e il tuo client non la manda) e si aspetta la stringa
/BinaryData
per indicare un blocco di dati binari e anche questa il tuo client non la invia ...
In piu', questo server, suddivide i dati in ingresso in base alla stringa
omfglol
ma questo non riesco a comprendere perche' lo faccia ... probabilmente anche questo codice e' stato modificato in maniera non corretta ...
Per riepilogare, il codice del server non e' completamente corretto e comunque si aspetta delle informazioni che il codice del client non gli fornisce affatto perche' e' stato modificato.
|
|
.:ViRuS:. (Ex-Member)
Pro
Messaggi: 174
Iscritto: 01/06/2008
|
Sisi la /receiveFile la riceve... ma non è in questa parte di codice...
ho aggiustato il codice mettendo tcp.senddata "/BinaryDataomfglol" & data
lo splitt avviene perchè ci sono molte funzioni tra client e server.. e devo usare solo una socket...
provo con questi cambiamenti.. sperando che funzioni ...
Nel Caso posto qui... Grazie mille dell'aiuto!!!
Ma questo codice NON corrisponde a quello del client. |
sisi corrisponde al client... cosa avrebbe di strano? Ultima modifica effettuata da .:ViRuS:. il 27/07/2008 alle 21:09 |
|
gantonio (Normal User)
Guru^2
Messaggi: 1532
Iscritto: 09/09/2007
|
Postato originariamente da .:ViRuS:.:
sisi corrisponde al client... cosa avrebbe di strano? |
No ... cosa dici?
Il codice del client che hai mostrato nel primo post NON corrisponde al codice del server ... Il server si aspetta tutte le stringhe che ti ho detto, di cui non c'e' traccia nel client ...
|
|
.:ViRuS:. (Ex-Member)
Pro
Messaggi: 174
Iscritto: 01/06/2008
|
è un discorso un po' complicato...
ma il SECONDO codice che ti ho postato fa parte del client e non del server...
ora però ho un altro problema.... qui credo sia proprio colpa della ricezione e non dell' invio
ecco il codice d'invio:
Codice sorgente - presumibilmente VB.NET |
Private Const chunk = 8192 If data = "OK" Then data = "" Open Dialog1.FileName For Binary As #1 DoEvents Do While Not EOF(1) data = Input(chunk, #1) TCP.SendData "/BinaryDataomfglol" & data Pause 400 DoEvents Loop DoEvents TCP.SendData "EndTransfer" Close #1 End If
|
Ed ecco invece il codice che riceve:
Codice sorgente - presumibilmente Delphi |
S = data V = Split(S, "omfglol") TCP.GetData data DoEvents If V(0) = "/BinaryData" Then Put #9, , V(1) End If If data = "EndTransfer" Then Close #9 End If
|
ecco il problema... quando il trasferimento finisce (Arriva endtransfer) e chiude il file, vado per aprire l'img (il fle è un img) e non esce completa ma solo una parte... ho cosi provato a far aprire un file senza winsock... e a scriverci dentro i dati prima di inviarli il risultato? il file c'è ed è stato copiato... MA PERCHè COL WINSOCK NO!!!!!!!!!!!!!!!!!!!!!!!!!!!!
PER FAVORE RAGA LO VOGLIO RISOLVERE STO PROBLEMA... VEDIAMO DI RISOLVERLO INSIEME PERFAVORE...
GRazie mille di tutto!!!!!!!!!! Ultima modifica effettuata da .:ViRuS:. il 28/07/2008 alle 12:34 |
|