Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    50

    VB6 winsock

    ciao a tutti, vi scrivo chiedendovi un informazione sul sendData del winsock.

    Usando dei sendData all'interno di un controllo Timer c'è la possibilità di inviare stringhe in modo molto veloce? io ho impostato l'intervallo a 1 ma la velocità non mi soddisfa.
    in poche parole dovrei mandare circa 9 stringhe separate in 3 o 4 sec è possibile?

    Ho provato una routine in un modulo normale settando la variabile dei dati con un limite di caratteri ma non è quello che cerco anche perchè i dati ricevuti variano parecchio.

    grazie..

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    La tua richiesta non e' chiara ...

    Intervallo 1 significa 1 millisecondo e a parte il fatto che non e' possibile usare con Windows un intervallo cosi' piccolo, poi parli di 9 stringhe (cosa contengono? quanto sono lunghe?) e dici "separate" che non ha molto senso per la comunicazione di rete ...

    Insomma, se non chiarisci, non avrai molte risposte ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    50

    ok spiego meglio

    l'intervallo 1 è millisecondo esatto era x dire il meno possibile , cmq io avrei bisogno di mandare 9 stringhe separate nel senso non concatenate, e mandare delle stringhe una dopo l'altra esempio.

    esempio in un pulsante:
    winsock.senddata "Prova stringa"
    winsock.senddata "Questa è solo una dimostrazione"

    il risultato della variabile get dati, sarebbe
    tutta una stringa:
    Prova stringa Questa è solo una dimostrazione

    non posso permettermi di mettere una restrizione di caratteri esempio:
    dim dati as string
    winsock.Getdata dati, vbstring, 13

    perchè i caratteri e lunghezza variano e per complicare il tutto, mi serve gestire il tutto in un controllo timer che manda dei senddata usando if ecc con un totale di 9 a fine routine.
    Solo che x fare in modo non uscisse una stringa intera con tutte le 9 stringe concatenate ho inserito delle pause che fanno perdere un pò troppo tempo.

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    E' colpa mia ma continuo a non capirci niente.

    Se devi inviare dei dati, fallo senza tanti problemi, senza timer e senza nessun problema.

    Se devi individuare in ricezione le varie parti, invia le stringhe separandole da un carattere noto e facilmente riconoscibile (che ovviamente non possa fare parte delle stringhe stesse).

    A questo punto non devi attendere nulla (anche perche' un'attesa non avrebbe senso in rete ...).

    Ad esempio invierai

    Stringa1#Stringa2#Stringa3#Stringa4#Stringa5#Strin ga6#Stringa7#Stringa8#Stringa9#

    come una sola stringa e in ricezione userai il carattere # per separare le varie parti.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    50

    grazie

    si oregon ci avevo pensato infatti è un ottima idea la tua, solo che non so come leggere solo la parte presente senza quel carattere in mezzo.

    vbstr1#vbstr2#vbstr3# ecc esempio come leggo vbstr2? mi posteresti un esempio grazie.

    ricordati ke sono stringhe che variano quindi nn so che ricevo a parte il rikiamo ess -err -ok ecc dei piccoli riconoscimenti che ho inserito x il lato client.

    esempio

    -car1 vbstr1#-car2 vbstr2 ecc.

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Per separare le varie parti usa la funzione

    Split

    usando il carattere "#" come separatore.

    Per l'help sull'uso di tale funzione

    http://msdn.microsoft.com/en-us/libr...65(VS.60).aspx
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    50

    mmmm

    ciao allora sto provando ma ho delle difficoltà su alcune cose.

    premetto che ora la stringa mi esce unica è lunga:

    -1car1 stringa1#-1car2 stringa2#-1car3 stringa3# fino a 9

    poi in ricezione per leggere tale stringa prima utilizzavo il metodo di una stringa alla volta, con le pause mi usciva così:

    -1car1 stringa1
    -1car1 stringa2 una separata all'altra. e utilizzavo questo metodo.

    If Left(dati, 7) = "-1car1 " Or Left(dati, 7) = "-2car1 " Then
    text1.Text = Mid(dati, 8)
    per ogni stringa fino a 9 però come ben sai utilizzando pause in modo che il dataarrival non da una stringa lunga e concatenata.

    Ho provato lo split ma me li separa non so come far capire alla condizione che deve leggere da # fino a # e anche se riuscissi a farlo la prima stringa che ricevo non ha il # come posso fare? Ho provato a leggere lo split ma non riesco a trovare ciò che cerco.

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Una volta che arriva TUTTA la stringa, allora puoi scrivere

    codice:
    Dim els() As String
        
    els = Split(stringa, "#")
    e negli elementi da

    els(0)

    a

    els(8)

    avrai le tue stringhe
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    50

    problemino

    Allora oregon scusa se scrivo ora ma non ci sono stato, sembra che tutto funzioni bene solo che a els(2) mi da errore runtime 9 indice non compreso nell'intervallo. io ho scritto così:

    Dim els() As String
    els = Split(stringa, "#")

    If Left(els(0), 7) = "-1car1 " Or Left(els(0), 7) = "-2carta1 " Then
    text1.Text = Mid(els(0), 8)
    End If
    If Left(els(1), 7) = "-1car2 " Or Left(els(1), 7) = "-2car2 " Then
    text2.Text = Mid(els(1), 8)
    End If
    If Left(els(2), 7) = "-1car3 " Or Left(els(2), 7) = "-2car3 " Then
    text3.text = Mid(els(2), 8)
    End If

    e continuando solo che mi da errore da els(2).

    mamma mia ke scossa di terremoto

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Io parto dal presupposto che la stringa di partenza

    stringa

    sia fatta come c'eravamo detti, quindi

    S1#S2#S3#S4#S5#S6#S7#S8#S9#

    Se e' fatta diversamente, ad esempio

    S1#S2#

    allora puoi avere quel problema perche' le stringhe presenti sono solo 2 (quindi els(0) e els(1) ...).
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.