Regardons votre code:
' Declare your variables
Dim objClient As Client
Dim d As DictionaryEntry
' For every client in the hash table
For Each d In mcolClients
objClient = d.Value
' Send the data to the client.
objClient.Send(Data & vbLf)
Next
Ce fait exactement ce que vous attendez à, à savoir envoyer Data
à chaque client connecté qui est dans le HashTable
.
Votre question était, comment envoyez-vous les données à un client particulier, plutôt que chacun d'eux. Pour donner une réponse spécifique, plus de détails seraient nécessaires sur ce qui est en train d'être réalisé/comment votre code actuel est structuré. Mais voici quelques options générales ...
Si le but est d'envoyer à tout le monde, mais le client que les données ont été reçues de, vous pouvez modifier votre code actuel afin que, en plus de Data
il a également fourni receivedFromClient
, puis n'envoyez pas les données où d.Value
était receivedFromClient
. Si le but est d'envoyer une réponse au client qui a envoyé le message (comme un 'ack'), il suffit de le faire au point de réception, vous n'avez pas besoin de vous référer à votre HashTable
(au moment où vous lisez les données, vous devez savoir de qui vous lisez).
Si le but est d'envoyer à un client spécifique, vous avez besoin de deux choses:
- Une façon d'identifier la connexion par le client (éventuellement stocker un
UserName
dans l'objet Client
qui est inséré dans la HashTable
par exemple, ce UserName
peut être fourni par le client lors de ses premières connexions, par exemple dans le cadre de votre protocole 'chat'
- Une façon de spécifier le client cible, comme la cible
UserName
, qui pourrait être recherchée dans le hachage. Donc, le client pourrait envoyer @somebody here's a secret message
pour envoyer le texte here's a secret message
au Client
dans le HashTable
avec un attribut UserName
de somebody
. Cette chaîne reçue doit être traitée pour extraire le jeton de nom d'utilisateur pertinent. Il semblerait également logique d'envisager d'utiliser UserName
comme clé pour le HashTable
, si cela va être la principale raison pour effectuer des recherches.