powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Проверить если TCP соединение живое.
14 сообщений из 14, страница 1 из 1
Проверить если TCP соединение живое.
    #39571176
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я открываю TCP сервер. Как мне проверить что сокет клиента живой, что соединение с клиентом присутствует?
...
Рейтинг: 0 / 0
Проверить если TCP соединение живое.
    #39571192
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7,

только обменяться данными
...
Рейтинг: 0 / 0
Проверить если TCP соединение живое.
    #39571212
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Изопропилjenya7,

только обменяться данными
в эмбедед когда я открываю сокет я включаю KEEPALIVE опцию. А в С# если я создал TCP Listener - у него есть такая опция?
...
Рейтинг: 0 / 0
Проверить если TCP соединение живое.
    #39571236
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7,

Опция есть, но работает keepalive совсем не так как многие ожидают
...
Рейтинг: 0 / 0
Проверить если TCP соединение живое.
    #39571259
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Изопропилjenya7,

Опция есть, но работает keepalive совсем не так как многие ожидают
а что вы посоветуете? как сделать?
...
Рейтинг: 0 / 0
Проверить если TCP соединение живое.
    #39571261
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7,

Предусмотреть в своём протоколе обмен эхо-пакетами
...
Рейтинг: 0 / 0
Проверить если TCP соединение живое.
    #39571272
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Изопропилjenya7,

Предусмотреть в своём протоколе обмен эхо-пакетами
но keepalive так и работает - он посылает системный пакет (len=0) и получает ответ.
...
Рейтинг: 0 / 0
Проверить если TCP соединение живое.
    #39571290
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7,

Параметр означает Не закрывать и переиспользовать соединение. Так что уточняйте вопрос.
...
Рейтинг: 0 / 0
Проверить если TCP соединение живое.
    #39571336
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123jenya7,

Параметр означает Не закрывать и переиспользовать соединение. Так что уточняйте вопрос.
в эмбеде мы делаем так - если есть ошибка мы закрываем сокет и открываем заново, пытаемся сделать реконект, если нет ошибки а просто нет связи с сервером мы сокет не закрываем. А как это сделать в С#?
...
Рейтинг: 0 / 0
Проверить если TCP соединение живое.
    #39571348
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7эмбеде мы делаем так
Фиг знает что это, но думаю, что точно также пишите и тут. Imho.
...
Рейтинг: 0 / 0
Проверить если TCP соединение живое.
    #39572231
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
TCP соединение всегда живое, потому что это протокол передачи данных. Имеет смысл проверять, открыт ли нужный порт по протоколу TCP

jenya7А в С# если я создал TCP Listener - у него есть такая опция?
Listener пассивно слушает, а вам надо активно проверить.

Если не забуду, то завтра с работы дам код
...
Рейтинг: 0 / 0
Проверить если TCP соединение живое.
    #39572242
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7но keepalive так и работает - он посылает системный пакет (len=0) и получает ответ.
и как часто?
как приложение узнаёт о потере связи?


У Стивенса в книге всё хорошо описано
...
Рейтинг: 0 / 0
Проверить если TCP соединение живое.
    #39572476
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
    public bool PingPort(string IP, int port, int timeout_mcek = 500)
    {
        bool ret = false;
        using (Socket socket = new Socket(AddressFamily.InterNetwork,
                    SocketType.Stream,
                    ProtocolType.Tcp))
        {
            IPEndPoint point = new IPEndPoint(IPAddress.Parse(IP), port);
            var result = socket.BeginConnect(point, null, null);

            ret = result.AsyncWaitHandle.WaitOne(timeout_mcek, true);
            if (ret)
            {
                if (socket.Connected)
                socket.EndConnect(result);

            }
            else
            {
                socket.Close();
            }
        }
        return ret;
    }
...
Рейтинг: 0 / 0
Проверить если TCP соединение живое.
    #39575016
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cat2,
спасибо. попробую.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Проверить если TCP соединение живое.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]