windows - Как проверить, что сокет подключен? - ХэшКод

войти карьера блог сеть знаний справка
Вопросы Метки Участники
Форумы для: пользователей, администраторов, математиков и филологов.

# windows - Как проверить, что сокет подключен?

0

Вот, к примеру, я подключаюсь к серверу:

    TcpClient Client = new TcpClient();
    Socket socket;

    Client.Connetc("127.0.0.1", 1200);
    socket = Client.Client;

Теперь как проверить, что сокет удачно подключен. К примеру, чтоб было так

    if (Сокет успешно подключен)
    {
        int i = 1;
    }
    else {
        int a = 0;
    }

asp.net windows socket

задан 6 Май 22:11

VOLKyiv
1

перемечен 9 Май 19:51

northerner
2.9k●2●7

1

Какая система программирования (ОС, язык) Вас интересует ?

В большинстве случаев, если Connect() выполнен успешно, то socket удачно подключен.

(6 Май 23:48) avp
1

Если ничего не вернуло ошибку, то скорее всего все подключено с "этой стороны". А проверить, что подключение действительно установлено - нужно отправить данные и получить ответ (если он нужен).

(7 Май 10:47) KoVadim

Windows, ASP.NET

(9 Май 18:03) VOLKyiv

1 ответ
старые новые ценные

1

Один индус из Лондона приводит в своем блоге вот такой рецепт проверки подключения сокета в произвольный момент времени. У класса Socket имеется булевское свойство Connected, которое отражает факт подключения в ходе последней операции с удаленным узлом (возможно, выполненной давно). Метод проверки подключения по факту заключается в пинговании сокета:

    public static bool IsSocketStillConnected(Socket socket)
    {
        bool connected = true;
        bool blockingState = socket.Blocking;
        try
        {
            byte[] tmp = new byte[1];
            socket.Blocking = false;
            socket.Send(tmp, 0, 0);
        }
        catch (SocketException e)
        {
            connected = false;
        }
        finally
        {
            socket.Blocking = blockingState;
        }
        return connected;
    }

Использоваться вышеприведенная функция может, например, так:

    if (IsSocketStillConnected(mySocket))
    {
        mySocket.Send(message);
    }

ссылка

отвечен 9 Май 20:38

northerner
2.9k●2●7

1

Вообще-то надо определить поточнее, что значит "сокет подключен" ? В данный момент доступно чтение, запись или и то и другое ?

Как известно, есть вызов shutdown(int sockfd, int how);

       If how is  SHUT_RD,
       further  receptions  will  be  disallowed.   If how is SHUT_WR, further
       transmissions will be disallowed.  If how is SHUT_RDWR, further  recep‐
       tions and transmissions will be disallowed.

В windows наверняка есть его аналог.

(10 Май 0:07) avp

Ваш ответ

Если вы не нашли ответ, задайте вопрос.

### Здравствуйте

ХэшКод - это совместно редактируемый форум вопросов и ответов для начинающих и опытных программистов.

Присоединяйтесь!

регистрация »

отмечен:

windows ×430
asp.net ×169
socket ×88

задан
6 Май 22:11

показан
196 раз

обновлен
10 Май 0:08

### Связанные вопросы

Windows как сделать fdopen на socket ? [закрыт]

Сокеты PHP на Windows

Как добавить на default.aspx контрол С# windowsform webbrowser?

Зачем вызывать WSACleanup? [закрыт]

MinGW Windows POSIX socket() не работает [закрыт]

Рекурсивное удаление файлов

Количество байт, читаемых из TCP-сокета

программный конвертер интерфейсов [закрыт]

Ошибка IIS приложения

Структура asp.net mvc приложения

### Отслеживать вопрос

по почте:

Зарегистрировавшись, вы сможете подписаться на любые обновления

по RSS:

Ответы

Ответы и Комментарии

Впервые здесь? Загляните в справку!

×
Привет! close
Расскажите о нас друзьям
Хорошему форуму необходимо много участников! Пользуйтесь этой ссылкой, чтобы приглашать всех, кому может быть интересно.
Пользуйтесь своими любимыми сетями, чтобы поделиться ссылкой с друзьями, товарищами и коллегами.
Чтобы рассказать о форуме, добавьте баннер на свою страницу, скопировав и вставив приведенный ниже HTML-код.