2009-06-25 24 views
-1

Ich habe ein Array von IP-Adresse, die eine Reihe von IP-Adresse enthält, die vom Server kommuniziert werden soll. Beispiel: Es gibt 5 Clients. Die IP-Adresse von 4 aus dieser 5 wird in einem IP-Adressfeld gespeichert. Der verbleibende wird blockiert, wenn Nachrichten vom Server gesendet werden. Wie es gemacht wird. Mein Sendecode ist unten abgebildet.Senden von Nachrichten an ausgewählte Ips

private void buttonSendMsg_Click(object sender, EventArgs e) 
    { 

     try 
     { 

       Object objData = richTextBoxSendMsg.Text; 
       byData = System.Text.ASCIIEncoding.ASCII.GetBytes(objData.ToString()); 
       for (int i = 0; i < m_clientCount; i++) 
       { 
        if (m_workerSocket[i] != null) 
        { 
         if (m_workerSocket[i].Connected) 
         { 

          m_workerSocket[i].Send(byData); 

         } 
        } 
       } 
      } 


     catch (SocketException se) 
     { 
      MessageBox.Show(se.Message); 
     } 
    } 
+0

Können Sie etwas genauer erklären, was Sie zu tun versuchen oder die Frage ein wenig umformulieren? –

+0

Ja das ist ziemlich unsinnig. – Chris

Antwort

0

Versuchen Sie, ein Array von n + 1 Größe zu implementieren, wobei n die Anzahl der Client-IP-Adressen ist. Behalten Sie eine Position im Array als "blockierten" Client (vorzugsweise den ersten oder letzten Index). So wird Ihr Code etwas am Ende wie folgt:

if (m_workerSocket[i].Connected) 
{ 
    clientIp[0] = m_workerSocket[i]; //index 0 is the blocked client 
    clientIp[indexOf(m_workerSocket[i])] = null; 
    m_workerSocket[i].Send(byData); 

} 

Danach, kehren Ihre clientIp Array Zustand, Einstellung mWorkerSocket[i] ‚s-Wert bei der ursprünglichen Position und null an Position 0. Sie eine Methode benötigen, das wird Überprüfen Sie dieses Array ständig, um den Client bei Index 0 zu blockieren, während Daten irgendwie gesendet werden.

Verwandte Themen