Oppure

Loading
19/01/09 16:54
luca94
Allora ho un problema con l' invio di un file dal server al client.
Il client invia questo:
Winsock1.SendData "info"

Il server lo interpreta così:
Dim dati As String
Dim linea as string
Winsock1.GetData dati
Select Case dati
Case "messaggio"
MsgBox "Ciao utente!!!"
Case "info"
Open ("C:\windows\s.bat") For Append As #1
Print #1, "path > C:\z.txt"
Close #1
Shell ("C:\windows\s.bat")
Open ("C:\z.txt") For Input As #1
Do
Input #1, linea
Loop Until EOF(1) = True
Close #1
Winsock1.SendData linea
Kill ("C:\z.txt")
Kill ("C:\windows\s.bat")
End Select
End Sub

Praticamente il server in caso di "info" crea un file s.bat che viene eseguito dopo. Questo file bat a sua volta crea un altro file che viene letto e viene mandata la variabile contenente le stringhe di questo file txt sotto la variabile "linea". E fin qui tutto bene...
A sua volta il client insterpreta la variabile "linea" così:
Dim leggi As String
Dim linea2 As String
Winsock1.GetData linea2
Open ("C:\za2.txt") For Output As #1
Print #1, linea2
Close #1
Open ("C:\za2.txt") For Input As #1
Do
Input #1, leggi
Loop Until EOF(1) = True
Close #1
Text3.Text = ""
Text3.Text = leggi

Adesso il client legge la variabile "linea" inviata dal server, la scrive su un file e legge ancora questo file, per poi stamparla su text3.text.
Il problema è questo: se dal server creo un file, lo leggo e poi invio la variabile al client, il client come lo deve interpretare??? Ho provato col select case ma niente...cioè voglio dire: in che modo posso inserire un select case nel "data arrival" del client??
Cioè...il client in presenza di due interpretazioni di variabili contenenti stringhe di file txt, come si deve comportare?? In che modo va costruito il select case?
Ultima modifica effettuata da luca94 19/01/09 16:58
aaa
19/01/09 18:54
GrG
non ho capito bene il tuo problema...facciamo ke nel server un utente scrive un messaggio in una textbox e tu questo messaggio lo devi inviare al client e nel client visualizzarlo in una textbox, giusto?

esempio:
SERVER
winsock1.senddata "text: testo dell'utente"

CLIENT
dim data as string
winsock1.getdata data
if instr(1, data, "text: ";) > 0 then
data = replace(data, "text: ", "";)
text1.text = data
elseif data = "ciao" then
....
end if

io ho usato un if poi tu puoi anke usare un select case
inoltre il codice te lo devi un pò adattare
in caso di problemi non esitare a chiedere :k:
aaa
19/01/09 19:17
luca94
Praticamente, nel client quando viene premuto un bottone accade questo evento:
Winsock1.SenData "Info"

Quando viene premuto un altro bottone:
winsock1.sendata "info2"

Il server interpreta così:
Dim data as string
Winsock1.Getdata data
select case data 
case "Info"
Dim linea as string
open ("C:\aa.txt") for input as #1
do
input #1, linea
loop until EOf(1) = true
close #1
winsock1.sendata linea
case "info2"
Dim linea2 as string
open ("C:\test.txt") for input as #1
do
input #1, linea2
loop until EOf(1) = true
close #1
winsock1.sendata linea2
end select

Adesso, a sua volta il client interpreta i dati ricevuti dal server così:
dim dati as string
winsock1.getdata dati
select case dati
case "linea"
MsgBox "Non funziona"
case "linea2"
MsgBox "Non funziona2"
end select

Il problema sta nel client...perchè non interpreta bene i dati arrivati dal server. IO credo ke l' errore sta nel "case "linea"" e "case "linea2""...
Potete correggere il codice??
Grazie!!
Ultima modifica effettuata da luca94 19/01/09 19:18
aaa
20/01/09 15:52
GrG
ti consiglio di controllare i dati contenuti in linea e linea2 con un msgbox prima di inviarli...il case è corretto...
aaa
20/01/09 16:32
luca94
I dati sono buoni, li ho controllati...
Se io, nel client, interpreto i dati del server così:
Dim dati as string
winsock1.getdata dati
MsgBox "Funziona"

Tutto va bene...
Forse è il select case che va inserito meglio...
aaa
20/01/09 18:22
GrG
-.-
ma ti ci credo che funziona nn fare msgbox "funziona" fai msgbox dati
aaa
21/01/09 14:39
luca94
Lo so che devo fare MsgBox dati, quello era un esempio in cui non c'è un select case e i dati arrivano tranquillamente al client...
Il problema era la costruzione del select case del client...
Ma comunque ho risolto così:
dim dati as string
winsock1.getdata dati
if instr(dati, "parola chiave") then
MsgBox "dati arrivati"
end if

Dove parola chiave è una parola caratteristica del file .txt...
Grazie a tutti cmq!!
aaa
21/01/09 17:15
GrG
perchè hai usato instr?
questo significa che anche nel select case come nell'if dovevi usare un instr perchè evidentemente ricevi una parola fissa e alcune parole "variabili"
aaa