Проверка состояния сети в C#

Из того, что я могу расшифровать из вашего кода.

1-выберите А1 и в конце (вниз) до последней ячейки + 1, затем сделайте эту ячейку = "abc"

2-Вы не знаете, как начать с А2, поэтому у вас есть if cell starts with a then rowstart=2 [ 116]

Выполните 3 цикла по каждой ячейке и найдите «bcd» или «efgh» и удалите строки

4-ступенчатый цикл при переходе к исходному «abc»

[119 ] 5-Назовите оставшийся диапазон ячеек со значением в A1


Самый быстрый способ, который я нашел, чтобы удалить значения строк в столбце строк, - использовать функцию VBA replace () и заменить значения с пробелами, вы можете использовать специальные ячейки, чтобы удалить пробелы.

Я заметил в вашем коде, что вы используете end(xldown), который показывает мне, что в ваших данных нет пробелов для запуска, поэтому замена этих конкретных ячеек на пробелы будет работать.

Для пары тысяч строк результат очень быстрый, хотя не уверен насчет десятков тысяч строк.

Проверьте это.

Sub Button1_Click()
    Dim sh As Worksheet, rng As Range
    Set sh = ActiveSheet

    With sh
        Set rng = .Range("A2:A" & .Cells(.Rows.Count, "A").End(xlUp).Row)

        With rng
            .Replace what:="bcd", replacement:="", lookat:=xlPart, MatchCase:=False
            .Replace what:="efgh", replacement:="", lookat:=xlPart, MatchCase:=False
            .SpecialCells(xlCellTypeBlanks).EntireRow.Delete
        End With

        .Range("A2:J" & .Cells(.Rows.Count, "A").End(xlUp).Row).Name = .Range("A1").Value
    End With

End Sub
18
задан Brian Clark 24 November 2008 в 14:09
поделиться

5 ответов

Если Вы просто хотите проверить, возросла ли сеть затем на использование:

bool networkUp
    = System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable();

Для проверки состояния определенного интерфейса (или другая информация) использование:

NetworkInterface[] networkCards
    = System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces();

Для проверки состояния удаленного компьютера затем необходимо будет соединиться с тем компьютером (см. другие ответы)

38
ответ дан 30 November 2019 в 06:02
поделиться

Первое предложение (IP-соединение)

можно попытаться соединиться с IP-адресом с помощью чего-то как:

IPEndPoint ipep = new IPEndPoint(Ipaddress.Parse("IP TO CHECK"), YOUR_PORT_INTEGER);
Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
server.Connect(ipep);

я предлагаю Вас контрольному коду программы "Чата". Эти программы управляют большим количеством IP-соединений и дадут Вам хорошую идею того, как проверить, доступен ли IP.

114-секундное предложение (Ping)

можно попытаться проверить с помощью ping-запросов. Вот польза учебное руководство . Необходимо будет только сделать:

Ping netMon = new Ping();
PingResponse response = netMon.PingHost(hostname, 4);
if (response != null)
{
    ProcessResponse(response);
}

5
ответ дан 30 November 2019 в 06:02
поделиться

Ну, Вы попытались бы соединиться с определенным IP, и дескриптор отклоняет и тайм-ауты.

Взгляд на класс TcpClient в Системе. Сеть. Пространство имен сокетов.

2
ответ дан 30 November 2019 в 06:02
поделиться

Если Вы интересуетесь кодом состояния HTTP, следующее хорошо работает:

using System;
using System.Net;

class Program {

    static void Main () {
        HttpWebRequest req = WebRequest.Create(
            "http://www.oberon.ch/") as HttpWebRequest;
        HttpWebResponse rsp;
        try {
            rsp = req.GetResponse() as HttpWebResponse;
        } catch (WebException e) {
            if (e.Response is HttpWebResponse) {
                rsp = e.Response as HttpWebResponse;
            } else {
                rsp = null;
            }
        }
        if (rsp != null) {
            Console.WriteLine(rsp.StatusCode);
        }
    }

}

С уважением, tamberg

3
ответ дан 30 November 2019 в 06:02
поделиться

Если вы хотите отслеживать изменения в статусе используйте событие System.Net.NetworkInformation.NetworkChange.NetworkAvailabilityChanged :

NetworkChange.NetworkAvailabilityChanged 
    += new NetworkAvailabilityChangedEventHandler(NetworkChange_NetworkAvailabilityChanged);
_isNetworkOnline = NetworkInterface.GetIsNetworkAvailable();


// ...
void NetworkChange_NetworkAvailabilityChanged(object sender, NetworkAvailabilityEventArgs e)
{
    _isNetworkOnline  = e.IsAvailable;
}
13
ответ дан 30 November 2019 в 06:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: