2 / 2 / 0
Регистрация: 18.01.2012
Сообщений: 163
1

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

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

Author24 — интернет-сервис помощи студентам
здравствуйте! никто не подскажет как можно проверить текущее состояние сокета, точнее даже будет так:
предположим работает сервер и клиент к нему подключен через сокет, они обмениваются данными. в один прекрасный момент (не важно обмен идет или нет) сервер отрубается. как в клиенте можно это дело отследить??? (если идет отправка или прием) то не помешать этому процессу разумеется. вобщем доступность сервера в данный момент )))
 Комментарий модератора 
Дублирование тем запрещено!
0
17.07.2012, 12:43
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 2
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 3
я делал по таймеру запись в поток сокета
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  [ТС] 4
да он создан и работает, а вот например мы отключили сервер, как это отследить то??? Есть конечно вариант попытаться создать новый сокет и коннектить его, если вылетело исключение значит не доступен, но у меня на сервере создается массив подключений которые не удаляются при отключении клиентов, поэтому создавать новые подключения не желательно, мне бы отследить состояние сокета который работает в данный момент. а Connected показывает состояние по предыдущей операции отправки или приема по скольку я знаю, а не текущее состояние разве нет???
0
 Аватар для Yukikaze
352 / 331 / 49
Регистрация: 12.12.2011
Сообщений: 563
17.07.2012, 13:05 5
При разрыве соединения сервер получает от клиент пакет длинной 0 байт
2
2 / 2 / 0
Регистрация: 18.01.2012
Сообщений: 163
17.07.2012, 13:08  [ТС] 6
Цитата Сообщение от Yukikaze Посмотреть сообщение
При разрыве соединения сервер получает от клиент пакет длинной 0 байт
но мне то надо чтобы клиент это отследил, хотя если сервер вырубить то наверно клиент получает это сообщение.. а можно пример кода пожалуйста???
0
 Аватар для Yukikaze
352 / 331 / 49
Регистрация: 12.12.2011
Сообщений: 563
17.07.2012, 13:18 7
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 8
Цитата Сообщение от Yukikaze Посмотреть сообщение
При разрыве соединения сервер получает от клиент пакет длинной 0 байт
а клиент от сервера?
0
 Аватар для Yukikaze
352 / 331 / 49
Регистрация: 12.12.2011
Сообщений: 563
17.07.2012, 13:30 9
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  [ТС] 10
куда это ставить не работает вообще (((
0
 Аватар для Yukikaze
352 / 331 / 49
Регистрация: 12.12.2011
Сообщений: 563
17.07.2012, 14:46 11
Ilnur888, методы расширения
Читайте
0
 Аватар для buntar
543 / 544 / 181
Регистрация: 16.03.2012
Сообщений: 1,160
Записей в блоге: 2
20.07.2012, 16:01 12
Можно попробовать написать что-то, типа аналога Ping.
0
20.07.2012, 16:01
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
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
Ответ Создать тему

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Опции темы

Новые блоги и статьи
Что означает знак восклицания в TypeScript
hw_wired 14.02.2025
TypeScript - удивительный язык программирования, который предоставляет множество возможностей для работы с типами данных. Особый интерес вызывает оператор утверждения ненулевого значения, который. . .
Как свернуть/скрыть секции кода в Visual Studio Code
hw_wired 14.02.2025
Ежедневно мы работам с файлами, содержащими сотни и тысячи строк кода. Навигация по такому объему становится настоящим испытанием, особенно когда нужно быстро найти нужный метод или переменную. . . .
Автоматическое создание файла requirements.tx­t в Python
hw_wired 14.02.2025
Дружелюбная среда для разработки на Python, один из самых широко используемых языков программирования, состоит не только из самого кода, но и целого ряда важных компонентов. И если вы когда-нибудь. . .
Передача переменных окружения в контейнер Docker
hw_wired 14.02.2025
При работе с Docker контейнерами возникает необходимость передать различные настройки и конфигурационные параметры - от строк подключения к базам данных до API ключей. И хотя можно жестко прописать. . .
Отличия Constructor и ngOnInit в Angular
hw_wired 14.02.2025
Разработка компонентов в Angular - непростая задача, особенно когда дело доходит до правильной инициализации и управления их жизненным циклом. Каждый разработчик рано или поздно сталкивается с. . .
Ошибка "Transport security has blocked a cleartext HTTP" в iOS
hw_wired 14.02.2025
В iOS-разработке часто возникают неожиданные препятствия, и одним из самых распространенных является сообщение об ошибке "Transport security has blocked a cleartext HTTP". Эта ошибка появляется,. . .
Ошибка "Cleartext HTTP traffic not permitted" в Android
hw_wired 13.02.2025
При разработке Android-приложений можно столнуться с неприятной ошибкой "Cleartext HTTP traffic not permitted", которая может серьезно затруднить отладку и тестирование. Эта проблема особенно. . .
Изменение версии по умолчанию в NVM
hw_wired 13.02.2025
Node Version Manager, или коротко NVM - незаменимый инструмент для разработчиков, использующих Node. js. Многие сталкивались с ситуацией, когда разные проекты требуют различных версий Node. js,. . .
Переименование коммита в Git (локального и удаленного)
hw_wired 13.02.2025
Git как система контроля версий предоставляет разработчикам множество средств для управления этой историей, и одним из таких важных средств является возможность изменения сообщений коммитов. Но зачем. . .
Отличия Promise и Observable в Angular
hw_wired 13.02.2025
В веб-разработки асинхронные операции стали неотъемлимой частью почти каждого приложения. Ведь согласитесь, было бы странно, если бы при каждом запросе к серверу или при обработке больших объемов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru