PDA

View Full Version : [vb6] winsock


uMoR
26-08-2003, 02:43
ho un problema col winsock

devo mettere il programma in ascolto su una determinata porta, il problema è che la macchina ha 3 indirizzi ip:

192.168.0.1
10.10.10.1
e 127.0.0.1 (?)

ha anche due schede di rete e la porta deve stare in ascolto su 192.168.0.1


come si fa ?

matpez
26-08-2003, 03:55
il 127.0.0.1 è il locale di ogni macchina (anche se nn in rete), per cui nn lo prendiamo in considerazione

saranno anche le 4 del mattino ma nn capisco il tuo problema, nn sai come fare a mattere in ascolto il winsock ad una determinata connessione?

sai che nn capisco la cosa degli IP, se tu da remoto cerchi di connetterti al winsock lui a qlc IP ti colleghi della macchina in questione va bene, se ne ha + di uno è indifferente, tanto lui li prende tutti.

Se nn sei capace a connettere due pc tramite il winsosk ti posso dare una mano, tanto nel client tu dici che IP vuoi collegare e lui si collegerà se la porta dell'IP selezionato è in ascolto.

ciaoooooooooooooo :p

uMoR
26-08-2003, 10:25
il problema forse non è chiaro

se una macchina ha 2 indirizzi ip su due schede di rete differrenti e metto il winsock in ascolto su una determinata porta, lui su quale ip si mette in ascolto ? su tutti e due ?

cionci
26-08-2003, 13:08
Se non specifichi l'ip su cui deve stare in ascolto...lui ascolta su tutti gli IP... Corripsonde al bind sull'indirizzo 0.0.0.0 ;)

uMoR
26-08-2003, 13:19
per specificarglielo come si fa ?


gli devo specificare 192.168.0.1

matpez
26-08-2003, 13:26
CLIENT: Si, nel Winsock.RemoteIP devi mettere quello che ti interesse ed in Windowsk.RemotePort la porta a cui si connette

SERVER: invece devi mettere Winsock.LocalPort la porta a cui vuoi mettere in ascolto.

Poi per "ascoltare" fai Winsock.Listen

Quando il client invece fa Winsock.Connect fa scattare l'evente ConnectionRequest, a questo punto fai cosi (se è un collegamento diretto, cioè se solo un client si connette per volta):

Private Sub Winsock_ConnectionRequest(ByVal requestID As Long)

If Winsock <> sckClosed Then
Winsock.Close
End If

Winsock.Accept requestID

end sub

DooM1
26-10-2003, 15:51
Resuscito il thread per non crearne uno nuovo :D

Io sto cercando di fare una sorta di programmino di chat con visual basic 6 e winsock.
il problema è che se invio velocemente molte stringhe di testo, queste si accavallano.
Praticamente, dopo che inserisco la nuova stringa arrivata (da DataArrival) nella casella di testo, aggiungo un chr$(13) per andare a capo.
Ma se arrivano molte stringhe insieme, si accavallano, e nella casella di testo compaiono non a capo a affiancate :mad:
Non so come risolvere il problema...
Mi aiutate per favore?

Grazie
Ciaux :D ;)

matpez
26-10-2003, 17:15
Quanto è molto strano perchè in teoria il controllo winsock ha un buffer che memorizza tutte le cose che ti arrivano e te le "risputa" una alla volta :rolleyes:

Perchè per ovviare al problema nn mandi già la stringa contenente il carattere vbCrLf ?!?!

Cosi anche se ne arrivano + di una va poi a capo lo stesso ;)

DooM1
26-10-2003, 19:49
Originariamente inviato da matpez
Quanto è molto strano perchè in teoria il controllo winsock ha un buffer che memorizza tutte le cose che ti arrivano e te le "risputa" una alla volta :rolleyes:

Perchè per ovviare al problema nn mandi già la stringa contenente il carattere vbCrLf ?!?!

Cosi anche se ne arrivano + di una va poi a capo lo stesso ;)

vbCrLf???
Intendi quello che io chiamo chr(13) ? :D
Caspita mi hai letto nella mente :D
Comunque ho fatto come hai detto, e sembra funzionare!!!
Grandissimo ;)
Grazie 1000000000

Ciaux :D ;)

matpez
26-10-2003, 21:27
Originariamente inviato da DooM1
vbCrLf???
Intendi quello che io chiamo chr(13) ? :D
Caspita mi hai letto nella mente :D
Comunque ho fatto come hai detto, e sembra funzionare!!!
Grandissimo ;)
Grazie 1000000000

Ciaux :D ;)


Sono contento :D

Il tutto quello che in VB6 inizia con vb... possiamo definirli parametri....per esempio il vbCrLf è la combinazione di chr(13) + chr(10). C'è ne sono un infinità, per esempio vbChecked per le checkbox, oppure vbNullChar che contiene il caattere chr(0)...insomma tanti tanti :p

DooM1
26-10-2003, 22:53
Originariamente inviato da matpez
Sono contento :D

Il tutto quello che in VB6 inizia con vb... possiamo definirli parametri....per esempio il vbCrLf è la combinazione di chr(13) + chr(10). C'è ne sono un infinità, per esempio vbChecked per le checkbox, oppure vbNullChar che contiene il caattere chr(0)...insomma tanti tanti :p
Ah ecco, scusa se ti disturbo ancora :D ... ma che differenza c'è tra chr(13) e chr(10)???
Non l'ho mai capito...!
E soprattutto, perchè combinarli insieme?!

Ciao e grazie ancora :D ;)

matpez
26-10-2003, 23:26
chr(10)=Line Feed -> cambia linea
chr(13)=Carriage Return -> il carrello torna all'inizio riga

combinati assieme fa la doppia azione torna a capo con il cursore e va all'inizio riga.

Come puoi notare sono anche le iniziali di vbCrLf :p