Problemi con MSWinSock |
Brandon |
13/01/2005 |
Difficoltà:
Principiante
|
|
Salve
a
tutti,
premetto
di
essere
un
profano
totale,
ma
sto
iniziando
a
fare
qualcosina.
Il
mio
progetto
riguarda
un
programma
di
instant
messaging
peer-to-peer
su
rete
lan.
Per
fare
ciò,
sto
sfruttando
MSWinSock.
E
tutto
va
bene,
se
non
fosse
che
il
metodo
.close
non
chiude
la
connessione.
Mi
spiego
meglio:
per
poter
comunicare
il
messaggio,
utilizzo
un
oggetto
MSWinSock
(per
esempio
CommSock).
Di
default,
è
attivo
CommSock.listen
su
una
ben
precisa
porta
(facciamo
10000).
Appena
arriva
una
richiesta
di
connessione,
lui
esegue
un
CommSock.accept
e
appena
i
dati
sono
arrivati
(evento
CommSock_DataArrival),
preleva
i
dati
ed
esegue
un
CommSock.close
ed
un
CommSock.listen.
Il
fatto
è
che
osservando
le
porte
aperte
del
pc,
quella
utilizzata
dalla
connessione
risulta
ancora
aperta,
quindi
se
un
altro
utente
(ma
anche
lo
stesso
di
prima)
prova
a
richiedere
una
nuova
connessione
alla
stessa
porta
di
prima,
va
in
time-out,
visto
che
il
pc
interpellato
non
è
in
ascolto
e
non
risponde
alle
richieste.
Lo
stesso
valga
per
il
pc
che
manda
il
messaggio.
Una
volta
inviati
i
dati
(evento
CommSock_SendComplete),
esegue
un
CommSock.close
sulla
porta
interessata
alla
trasmissione
(per
esempio
10001),
ma
osservando
le
porte
aperte,
si
nota
che
quella
è
ancora
aperta.
Dove
sto
sbagliando?
Grazie
in
anticipo
a
tutti
coloro
che
mi
risponderanno.
|