PDA

View Full Version : [VB6] Applicazione Client/Server


bsummer
05-09-2003, 21:15
Ciao a tutti.
Ho un problema a cui non riesco a venere a capo.

Ho un'applicazione client che deve inviare dei dati ad un server.
Ho creato una connessione tcp, il client riesce a connettersi correttamente al server, ma i problemi arrivano quando invio i dati.
Per inviare dati devo utilizzare il metodo SendData del controllo Winsock per ricevere i dati devo usare GetData.
I tipi di dato inviabili/ricevibili sono tutti quelli predifiniti (byte, integer, ecc) compresi String e array di byte.

Purtroppo il mio problema è che quando invio un array di byte dall'altra parte arrivano si tutti i byte inviati, ma puntualmente settati a zero. Se invece invio una stringa o un qualsiasi altro dato che non sia un vettore il problema non si pone...

Sinceramente non so dove sbattere la testa...ne sapete qualcosa voi?

Aloha!

matpez
05-09-2003, 23:05
Non ho mai provato a fare quello che dici tu, al massimo manda una stringa contenente uno pseudo vettore (es: "dato1,dato2,dato3.....") poi compatti con la JOIN e scompatti con la SPLIT

bsummer
06-09-2003, 09:27
Grazie, ma purtroppo devo assolutamente inviare un vettore di byte...

Continuo a non capire cmq...invio 8k dall'altra parte arrivano gli 8 k ... ma sono tutti a 0 ... boh :confused:

bsummer
06-09-2003, 09:43
La notte porta consiglio ed ho risolto il problema... :D

I dati ricevuti vanno messi in una variabli passata al metodo "getadata". Avevo erroneamente pensato che tale variabile dovesse essere già inizializzata, così avevo imposto che essa fosse un array di 8k...Sbagliavo. Mi è bastato definirla come variant e passarla a al sopracitato metodo e tutto è funzionato.

Evidentemente get data non fa altro che un set della viabile passata sul buffer dati che viene creato al momento della ricezione.

Beh, mistero risolto! :D :D :D

TriacJr
06-09-2003, 12:56
Originariamente inviato da bsummer
Ciao a tutti.
Ho un problema a cui non riesco a venere a capo.

Ho un'applicazione client che deve inviare dei dati ad un server.
Ho creato una connessione tcp, il client riesce a connettersi correttamente al server, ma i problemi arrivano quando invio i dati.
Per inviare dati devo utilizzare il metodo SendData del controllo Winsock per ricevere i dati devo usare GetData.
I tipi di dato inviabili/ricevibili sono tutti quelli predifiniti (byte, integer, ecc) compresi String e array di byte.

Purtroppo il mio problema è che quando invio un array di byte dall'altra parte arrivano si tutti i byte inviati, ma puntualmente settati a zero. Se invece invio una stringa o un qualsiasi altro dato che non sia un vettore il problema non si pone...

Sinceramente non so dove sbattere la testa...ne sapete qualcosa voi?

Aloha!


Ciao. :)

Vorrei fare anch'io un programma del genere... ovvero: un programma che trasmette un messaggio al ricevitore tramite internet.

In verità poi vorrei fare dei giochini per poter giocare on-line... :D

Solo che non saprei proprio da dove iniziare... mi sai indicare se ci sono delle librerie?

Grazie e ciao. :)

matpez
06-09-2003, 13:47
Guardati tutti i metodi, proprietà ed eventi del controllo Microsoft Winsock...serve questo per comunicare fra PC via remota...cmq ti allego un progettino di prova, cosi vedi come si fa, se hai dubbi chiedi pure!! :)

bsummer
06-09-2003, 13:50
Ciao. Se hai l'MsDN installato allora apri l'help e guarda la documentazione connessa al controllo WinSock.
Li troverai indicazioni sia su come realizzare un'applicazione Client/Server basata sul Tcp/Ip che un'applicazione peer2peer basata sull'UDP.

Non è affatto difficile, se cmq hai particolari problemi son qua ;)

Aloha!

TriacJr
06-09-2003, 16:53
Originariamente inviato da matpez
Guardati tutti i metodi, proprietà ed eventi del controllo Microsoft Winsock...serve questo per comunicare fra PC via remota...cmq ti allego un progettino di prova, cosi vedi come si fa, se hai dubbi chiedi pure!! :)

Grazie mille!!! E' stupendo... :) Poi proverò anche a capire come funziona (nel senso come funziona dentro il programma).

Siccome dalla prossima settimana dovrò farmi 5 ore di treno al giorno voglio provare a fare il gioco di scala 40 giocabile tramite internet. Se ci riuscirò lo posterò, anche se per voi sarà una c@xxata... :D

Grazie ancora e ciao. :)


Non è affatto difficile, se cmq hai particolari problemi son qua ;)

Aloha!

Grazie mille anche a te per la disponibilità. :)

Ciao. :)

matpez
06-09-2003, 17:48
Bene, se lo fai ci giochiamo :)

Se hai bisogno delle carte, ti passo un cotrollo che ho fatto, cosi da facilitare i giochi con le carte...poi magari nn ti piace!!

PS. se vuoi vederlo mi devi mandare l'email in pvt (specifica anche che vuoi il controllo) perchè qui è troppo grosso e nn posso upparlo :(

TriacJr
06-09-2003, 18:17
Originariamente inviato da matpez
Bene, se lo fai ci giochiamo :)

Se hai bisogno delle carte, ti passo un cotrollo che ho fatto, cosi da facilitare i giochi con le carte...poi magari nn ti piace!!

PS. se vuoi vederlo mi devi mandare l'email in pvt (specifica anche che vuoi il controllo) perchè qui è troppo grosso e nn posso upparlo :(

In che senso un controllo?

Comunque tu passa che male non fa... :D

Grazie mille davvero. ;)

La mia mail è triacjr@hotmail.com

Ciao. :)

TriacJr
07-09-2003, 10:10
GRAZIE MILLE!!! E' FANTASTICO!

Ma se io volessi fare un controllo come hai fatto tu, come potrei fare? Cioè, da dove dovrei partire?

Il VB lo conosco molto poco, ma mi piace. :)


Ciao. :)

TriacJr
07-09-2003, 10:12
Oppure se le volessi modificare, siccome mancano i quattro jolly.

Ciao. :)

matpez
07-09-2003, 11:19
Per modificarlo nn è difficile, però dovresti avere il codice...i due jolly nn ci sono per il semplice motivo che nn gli ho trocati.

Le carte che vedi sono contenute in una dll che windows adopera per "pescare" le carte nei suoi giochi....ma come ben sai..nn ci sta il jolly :(

Il funzionamento di quel ocx è semplice, è una classe visuale, cioè a differenza di una dll ha qlc di visibile sulla form, per il resto è tutto completamente uguale.

TriacJr
07-09-2003, 11:31
Ah... ok. E se volessi creare io un ogetto, come dovrei fare? Cioè... è possibile farlo in VB o come?

Grazie e ciao. :)

TriacJr
07-09-2003, 20:47
Questa non la capisco...

Ho aperto un nuovo progetto, e sul form ho messo una picture.

Fatto questo ho inserito il seguente codice:

Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then
Picture1.Move X, Y
End If
End Sub

Come fa a non andare?! Mi sfarfalla tutto l'oggetto che dovrebbe spostarsi...

Ciao. :)

matpez
07-09-2003, 21:50
Per forza ti sfarfalla, tu dici di muovere ad X, Y quando premi il bottone sinistro all'evento MouseMove, però in questo modo quando tu premi e tieni premuto il tasto ti sposti, lui entra talmente tante volte nella routine che il refresh della tuo occhio nn gli sta dietro e lo vedi sfarfallare.

Se vuoi fare una cosa del genere usa la routine: MouseDown

matpez
07-09-2003, 21:51
Originariamente inviato da TriacJr
Ah... ok. E se volessi creare io un ogetto, come dovrei fare? Cioè... è possibile farlo in VB o come?

Grazie e ciao. :)

Il mio è fatto in VB6 per cui si può fare benissimo, ora spiegarti in poche righe nn è semplice, prova a vedere se trovi in giro per la rete dei tutorial che spiegano come fare gli OCX in VB6

TriacJr
07-09-2003, 22:33
Originariamente inviato da matpez
Per forza ti sfarfalla, tu dici di muovere ad X, Y quando premi il bottone sinistro all'evento MouseMove, però in questo modo quando tu premi e tieni premuto il tasto ti sposti, lui entra talmente tante volte nella routine che il refresh della tuo occhio nn gli sta dietro e lo vedi sfarfallare.

Se vuoi fare una cosa del genere usa la routine: MouseDown

Si, ma in MouseDown me lo sposta una sola volta e basta...

Ciao. :)

TriacJr
07-09-2003, 22:37
Originariamente inviato da matpez
Il mio è fatto in VB6 per cui si può fare benissimo, ora spiegarti in poche righe nn è semplice, prova a vedere se trovi in giro per la rete dei tutorial che spiegano come fare gli OCX in VB6

Questo pomeriggio ho cercato un po' ma niente... domani cerco meglio. Dubito non sia spiegato da nessuna parte.

matpez
07-09-2003, 23:53
Se vuoi ti passo il sorgente di Cards.ocx cosi vedi com'è fatto e magari impari a farli, però mi devi rimandare la mail in pvt...tx :)

TriacJr
08-09-2003, 08:22
Originariamente inviato da matpez
Se vuoi ti passo il sorgente di Cards.ocx cosi vedi com'è fatto e magari impari a farli, però mi devi rimandare la mail in pvt...tx :)

Grazie mille!

La mia mail è qualche post sopra, comunque è triacjr@hotmail.com.

Mi spiace di non poter ricambiare dandoti qualche sorgente.

L'unico lavoro "serio" che ho fatto è un programma che riconosce quale carattere hai scritto. La scrittura del carattere avviene con il mouse su una picture e lui ti dice quale carattere hai scritto. L'unica nota è che i caratteri vanno immessi come se scrivessi su un palmare (percui alcuni sono un po' diversi e c'è l'obbligo della direzione). Se ti interessa dimmelo, anche se dubito sia un programma che interessi. :D

Ciao. :)

TriacJr
09-09-2003, 16:20
Originariamente inviato da TriacJr
Questa non la capisco...

Ho aperto un nuovo progetto, e sul form ho messo una picture.

Fatto questo ho inserito il seguente codice:

Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then
Picture1.Move X, Y
End If
End Sub

Come fa a non andare?! Mi sfarfalla tutto l'oggetto che dovrebbe spostarsi...

Ciao. :)

Mi autoquoto. :D

Sono un cretino... il codice era giusto, ma dovevo chiamarlo nella funzione del Form, altrimenti è ovvio che saltava come un pazzo. :muro:

Comunque io non demordo e prima o poi riuscirò a fare scala 40 on line. :) o almeno spero... :D

Ciao. :)