Сейчас попытаюсь обьяснить
Есть 2 сокета wsServer и wsClients, причём wsClients - индексированный
- Код: Выделить всё
Private Enum ClientConnectStates
ccsNotConnect = 0
ccsConnect = 1
End Enum
Private Type WinSockInfo
ConnectState As ClientConnectStates
sName As String
End Type
Private m_ws(1 To 8) As WinSockInfo
Private Sub m_wsServer_ConnectionRequest(ByVal requestID As Long)
MakeNewConnection requestID, m_wsServer.RemoteHostIP, m_wsServer.RemotePort
End Sub
Private Sub MakeNewConnection(ByVal requestID As Long, Optional ByVal RemoteHostIP As String, Optional ByVal RemotePort As Long)
Dim iSockNum As Long
iSockNum = GetFreeSocket()
Load wsClients(iSockNum)
wsClients(iSockNum).accept requestID
m_ws(iSockNum).ConnectState = ccsConnect
End Sub
Private Function GetFreeSocket()
GetFreeSocket = 0
Dim iNum As Long
For iNum = 1 To 8
If m_ws(iNum).ConnectState = ccsNotConnect Then Exit For
Next iNum
If iNum > 8 Then iNum = 0
GetFreeSocket = iNum
End Function
Так подключается новый клиент
- Код: Выделить всё
privete syb SendMessageToAll(sMessage as string)
dim iClientNum as integer
for iClientNum = 1 to 8
if m_ws.ConnectState = cssConnect then wsClients(iClientNum).SendData sMessage
Next iClientNum
end sub
Так я рассылаю данные всем клиентам, и при этом получает их только последний