Проверка, включен ли сервер - PullRequest
2 голосов
/ 07 марта 2012

Я пытаюсь создать какую-то программу, которая обнаружит , если сервер какой-либо игры включен или выключен, у меня есть IP-адрес и порт сервера.

Что у меня естьсделать, чтобы определить, включен ли сервер или нет?Розетки?Класс пинга?

Было бы неплохо, если бы вы, ребята, могли бы дать мне пример кода или что-то в этом роде.

Большое спасибо!

Ответы [ 3 ]

3 голосов
/ 07 марта 2012

См. Socket.Connect

public static void Connect1(string host, int port)
{
    IPAddress[] IPs = Dns.GetHostAddresses(host);

    Socket s = new Socket(AddressFamily.InterNetwork,
        SocketType.Stream,
        ProtocolType.Tcp);

    Console.WriteLine("Establishing Connection to {0}", 
        host);
    s.Connect(IPs[0], port); // Catch any exceptions here.
    Console.WriteLine("Connection established");
}   

Отправляя эхо-запрос на сервер, вы можете получить информацию о том, включен ли сервер или нет; он не указывает, работает ли служба, к которой вы пытаетесь подключиться, или нет.

если вам нужен первый вариант (общее представление о том, включен ли сервер и подключен ли он к Интернету), для этой задачи будет достаточно pinging.

Что касается эффективности - пинг более эффективен (ну, в больших масштабах), поскольку между сервером и клиентом обмениваются только 2 пакета, а не полное установление соединения, которое составляет около 3 пакетов - См. TCP 3-Way рукопожатие

1 голос
/ 07 марта 2012

Может быть, лучше сконцентрировать всю логику соединения в одном диспетчере, и если соединение будет разорвано, просто сообщите клиенту, что сервер не работает. Это неправильное поведение, пинговать сервер все время.

1 голос
/ 07 марта 2012

Вы можете проверить, включен ли серверный компьютер, но не запущена ли серверная программа, попытавшись подключиться к нему. Если серверная программа запущена, вы будете подключены, но если она не запущена, вы получите сообщение об ошибке «отказано в соединении».

Тем не менее, в большинстве случаев невозможно различить, когда сервер не работает, а сеть между вами и сервером не работает, так как оба эти случая, скорее всего, приведут к простою.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...