Отправка сообщений на выбранные Ips - PullRequest
0 голосов
/ 25 июня 2009

У меня есть массив IP-адресов, который содержит набор IP-адресов, которые должны быть переданы с сервера. Пример: есть 5 клиентов. IP-адрес 4 из этих 5 будет храниться в массиве IP-адресов. Оставшийся будет заблокирован во время отправки сообщений с сервера. Как это будет сделано. Код моего отправляющего сообщения показан ниже.

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);
        }
    }

1 Ответ

0 голосов
/ 25 июня 2009

Попробуйте реализовать массив размером n + 1, где n - это число IP-адресов клиентов. Сохраняйте позицию в массиве как «заблокированный» клиент (предпочтительно первый или последний индекс). Итак, ваш код будет выглядеть примерно так:

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);

}

После этого верните ваше состояние массива clientIp, установив значение mWorkerSocket[i] в исходное положение и null в положение 0. Вам потребуется метод, который будет постоянно проверять этот массив, чтобы заблокировать клиент по индексу 0 пока отправляет данные как-то.

...