Om man kör denna: Jo det bör du göra. Lämpligast i Socket_Close eventet. Jag skulle göra det så här:Winsock fråga (Index)
<code>
With tcp(Index)
' Sluta lyssna
.Close
' Acceptera användaren och låt den anslutas
.Accept requestID
End With
Load tcp(tcp.UBound + 1)
With tcp(tcp.UBound)
.LocalPort = 614
.Listen
End With
</code>
behöver man inte unloada de gamla winsockarna som stänger anslutningen? Det kan ju bli grymt många till slut....Sv: Winsock fråga (Index)
<code>
Socket(Index).Close
Unload Socket(Index)
</Code>Sv: Winsock fråga (Index)
1. Stoppa en winsock på din form, döp den till sckServer, ställ in att den ska lyssna på din port
2. Lägg till en till winsock på din form, döp den till sckClient, sätt index till 0
i sckServer_ConnectionRequest skriv:
dim iCnt as integer
for iCnt = 0 to sckClient
'Titta om någon klient är ledig
if sckClient(iCnt).state = sckClosed then
sckClient(iCnt).Accept requestID
Exit sub
end if
next
'Ingen klient ledig, ladda en ny
Load sckClient(sckClient.ubound+1)
sckClient(sckClient.ubound).Accept RequestID
I sckClient_Error och sckClient_Close eventen lägg till sckClient(index).Close. Close eventet talar om att andra parten har stängt ned förbindelesen, det innebär att du måste stänga ned din socket om du ska kunna använda den igen. Om något fel inträffar stänger vi ned vår socket, det räcker alldeles utmärkt som felhantering...