Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/47: Рейтинг темы: голосов - 47, средняя оценка - 4.89
2 / 2 / 0
Регистрация: 18.01.2012
Сообщений: 163

текущее состояние сокета

17.07.2012, 12:43. Показов 10077. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
здравствуйте! никто не подскажет как можно проверить текущее состояние сокета, точнее даже будет так:
предположим работает сервер и клиент к нему подключен через сокет, они обмениваются данными. в один прекрасный момент (не важно обмен идет или нет) сервер отрубается. как в клиенте можно это дело отследить??? (если идет отправка или прием) то не помешать этому процессу разумеется. вобщем доступность сервера в данный момент )))
 Комментарий модератора 
Дублирование тем запрещено!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.07.2012, 12:43
Ответы с готовыми решениями:

Как узнать состояние сокета?
В моей программе есть лейбл, в котором должно отображаться состояние сокета (Есть соединение или нет). Как это реализовать? Точнее, как...

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

Проверить текущее состояние клавиши
Собственно делаю прогу и надо проверить состояние клавиши NumLock без использования обработчиков,тоесть в реальном времени,т.е активирована...

11
25 / 25 / 5
Регистрация: 21.10.2009
Сообщений: 95
Записей в блоге: 1
17.07.2012, 12:53
C#
1
2
3
4
5
6
7
IPAddress RecIP;
if (!IPAddress.TryParse(Recipient, out RecIP))
   RecIP = System.Net.Dns.GetHostEntry(Recipient).AddressList[0];
 
Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
client.Connect(RecIP, Int32.Parse(Port));
Console.WriteLine(client.Connected.ToString());
Оно?

Recipient - string, имя или IP целевой машины
Port - string, номер порта целевой машины
0
146 / 143 / 32
Регистрация: 21.01.2012
Сообщений: 545
17.07.2012, 12:55
я делал по таймеру запись в поток сокета
C#
1
2
3
4
5
6
BinaryWriter br = new BinaryWriter(new NetworkStream(socket));
try
{
br.Write(1);
}
catch {//...}
Но правильный ответ тоже бы услышал)
0
2 / 2 / 0
Регистрация: 18.01.2012
Сообщений: 163
17.07.2012, 12:59  [ТС]
да он создан и работает, а вот например мы отключили сервер, как это отследить то??? Есть конечно вариант попытаться создать новый сокет и коннектить его, если вылетело исключение значит не доступен, но у меня на сервере создается массив подключений которые не удаляются при отключении клиентов, поэтому создавать новые подключения не желательно, мне бы отследить состояние сокета который работает в данный момент. а Connected показывает состояние по предыдущей операции отправки или приема по скольку я знаю, а не текущее состояние разве нет???
0
 Аватар для Yukikaze
352 / 331 / 49
Регистрация: 12.12.2011
Сообщений: 563
17.07.2012, 13:05
При разрыве соединения сервер получает от клиент пакет длинной 0 байт
2
2 / 2 / 0
Регистрация: 18.01.2012
Сообщений: 163
17.07.2012, 13:08  [ТС]
Цитата Сообщение от Yukikaze Посмотреть сообщение
При разрыве соединения сервер получает от клиент пакет длинной 0 байт
но мне то надо чтобы клиент это отследил, хотя если сервер вырубить то наверно клиент получает это сообщение.. а можно пример кода пожалуйста???
0
 Аватар для Yukikaze
352 / 331 / 49
Регистрация: 12.12.2011
Сообщений: 563
17.07.2012, 13:18
C#
1
2
int received = sock.Receive(buffer);
if(received == 0) return;
2
146 / 143 / 32
Регистрация: 21.01.2012
Сообщений: 545
17.07.2012, 13:26
Цитата Сообщение от Yukikaze Посмотреть сообщение
При разрыве соединения сервер получает от клиент пакет длинной 0 байт
а клиент от сервера?
0
 Аватар для Yukikaze
352 / 331 / 49
Регистрация: 12.12.2011
Сообщений: 563
17.07.2012, 13:30
KeBJIaP, пробуйте

Вот еще один вариант
C#
1
2
3
4
5
6
7
8
9
10
11
static class SocketExtensions
{
  public static bool IsConnected(this Socket socket)
  {
    try
    {
      return !(socket.Poll(1, SelectMode.SelectRead) && socket.Available == 0);
    }
    catch (SocketException) { return false; }
  }
}
потом вызывается обычая проверка
C#
1
if(sock.IsConnected) return true; //etc
0
2 / 2 / 0
Регистрация: 18.01.2012
Сообщений: 163
17.07.2012, 14:35  [ТС]
куда это ставить не работает вообще (((
0
 Аватар для Yukikaze
352 / 331 / 49
Регистрация: 12.12.2011
Сообщений: 563
17.07.2012, 14:46
Ilnur888, методы расширения
Читайте
0
 Аватар для buntar
543 / 544 / 181
Регистрация: 16.03.2012
Сообщений: 1,160
Записей в блоге: 2
20.07.2012, 16:01
Можно попробовать написать что-то, типа аналога Ping.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.07.2012, 16:01
Помогаю со студенческими работами здесь

MediaElement. Не определяет текущее состояние
Здравствуйте. Делаю плеер. Есть кнопка при нажатии на которую плеер будет либо останавливаться, если он запущен, либо наоборот. Пишу...

Как узнать текущее состояние процесса
Здравствуйте уважаемые эксперты. Собственно вопрос стоит в названии темы, как можно узнать текущее состояние процесса, т.е. находится он в...

ExecuteReader требует открытого и доступного соединения. Текущее состояние подключения закрыто
Здравствуйте. Возникла проблема с подключением сервера, он просит открыть к нему доступ. Как это сделать я не знаю. Подскажите пожалуйста....

Ошибка "ExecuteReader требует открытого и доступного соединения. Текущее состояние соединения закрыто. "
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data.OleDb; using System.Data;...

TTimer текущее состояние
Добрый день, Возникла такая проблемка, запускаю таймер и нужно по нажатию узнать сколько он натикал в данный момент, но у него никаких...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru