информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
За кого нас держат?Где водятся OGRыСетевые кракеры и правда о деле Левина
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Google заблокировала 2 с лишним... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Хоть я и не понял, что такое close_wait и established 11.12.01 12:59  Число просмотров: 1322
Автор: Heromantor Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Аааа а я вот и думаю где я это видал - CLOSE_WAIT и т.д. точно в netstat, дык он же работает с SNMP. Так что рой туды, для начала можешь почитать ЭТО http://www.sources.ru/cpp/cpp_winsock_inside_1.shtml. А как получить состояние сокета через SNMP я не знаю ;(, прдеполагаю что это вряд-ли можно сделать...
<programming>
[C++] Вопрос по TCP 10.12.01 14:21  
Автор: Wizard(2) Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Недавно при работе с Windows Sockets сталкнулся с такой проблемой: определить статус соединения.

Значит ситуация такова. Моя программа подключается к серверу, после чего через нее с сервером общается другая программа (например лезет в Inernet). Когда все данные получены(отправлены) статус соединения с сервером меняется на CLOSE_WAIT.

Теперь собственно вопрос: как можно определить состояние конкретного соединения (имея переменную SOCKET).

PS: ситуация описана очень кратко, и поэтому если что-то непонятно, могу уточнить.
[C++] Вопрос по TCP 13.12.01 08:25  
Автор: Terrible Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> Недавно при работе с Windows Sockets сталкнулся с такой
> проблемой: определить статус соединения.
Цитата из MSDN
TCP States As a Winsock programmer, you are not required to know the actual TCP states
Так что средства для получения статуса соединения в Winsock скорее всего отсутствуют, по крайней мере я их не нашел.
Winsock - это более высокий уровень, а статус соединения есть у TCP.
[C++] Вопрос по TCP 10.12.01 18:20  
Автор: Heromantor Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Че-то мало я понял... Но не select() ли тебе нужен?
[C++] Вопрос по TCP 10.12.01 18:34  
Автор: Wizard(2) Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> Че-то мало я понял... Но не select() ли тебе нужен?

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

Я конечно еще раз попробую может я чего-то недочитал(недопробовал).
Хоть я и не понял, что такое close_wait и established 10.12.01 18:51  
Автор: PS <PS> Статус: Elderman
<"чистая" ссылка>
Но состояние сокета можно проверить recv c MSG_PEEKом.
Если вернет 0 - значит живой, но пустой. Если код ошибки, тогда анализируешь ее.

> > Че-то мало я понял... Но не select() ли тебе нужен?
>
> Я его когда-то пробовал. Какие результаты он дал не помню
> точно, но по-моему он к состоянию CLOSE_WAIT относится так
> же как к состоянию ESTABLISHED, т.е. и в том, и в другом
> случае возращает одинаковые значения.
>
> Я конечно еще раз попробую может я чего-то
> недочитал(недопробовал).
Хоть я и не понял, что такое close_wait и established 10.12.01 19:17  
Автор: Wizard(2) Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> Но состояние сокета можно проверить recv c MSG_PEEKом.
> Если вернет 0 - значит живой, но пустой. Если код ошибки,
> тогда анализируешь ее.
>

CLOSE_WAIT и ESTABLISHED это состояние соединения (есть еще такие: TIMED_WAIT, LISTEN, FIN_WAIT_1 и пр.). Можно посмотреть состояние всех соединений с помощью комманды Netstat.

Насчет recv(), то у нее есть недостаток - на этой функции программа останавливается и ждет, пока не прийдут какие-то данные (хотя я использовал ее без MSG_PEEK). Из-за этого пока я использую send(), с помощью которой посылаю 0 байт. (Я думаю результат аналогичен recv() с MSG_PEEK). НО и в одном(CLOSE_WAIT) и в другом( ESTABLISHED) случаях send() успешно завершается - вот в этом то и проблема.
Хоть я и не понял, что такое close_wait и established 11.12.01 12:59  
Автор: Heromantor Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Аааа а я вот и думаю где я это видал - CLOSE_WAIT и т.д. точно в netstat, дык он же работает с SNMP. Так что рой туды, для начала можешь почитать ЭТО http://www.sources.ru/cpp/cpp_winsock_inside_1.shtml. А как получить состояние сокета через SNMP я не знаю ;(, прдеполагаю что это вряд-ли можно сделать...
Хоть я и не понял, что такое close_wait и established 11.12.01 13:24  
Автор: Wizard(2) Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> Аааа а я вот и думаю где я это видал - CLOSE_WAIT и т.д.
> точно в netstat, дык он же работает с SNMP. Так что рой
> туды, для начала можешь почитать ЭТО
> http://www.sources.ru/cpp/cpp_winsock_inside_1.shtml. А как
> получить состояние сокета через SNMP я не знаю ;(,
> прдеполагаю что это вряд-ли можно сделать...
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
В этом-то и проблема. Я даже уже скачал исходники програмы NetstatP (это аналог NetStat). Посмотрел - а там выдает общий список соединений, причем используя свои собственные переменные (насколько я понял несовместимые с SOCKET). А жаль :((

PS. А ЭТО я сейчас буду изучать(глядишь пригодится)
[C++] Вопрос по TCP 10.12.01 15:28  
Автор: Rook <Alex Sergeev> Статус: Member
<"чистая" ссылка>
стоит заглянуть сюда: http://program.dax.ru последняя рассылка был посвещена этой теме, правда там сделно на дельфи, но переделать проблемы нет - тоже апи.


> Недавно при работе с Windows Sockets сталкнулся с такой
> проблемой: определить статус соединения.
>
> Значит ситуация такова. Моя программа подключается к
> серверу, после чего через нее с сервером общается другая
> программа (например лезет в Inernet). Когда все данные
> получены(отправлены) статус соединения с сервером меняется
> на CLOSE_WAIT.
>
> Теперь собственно вопрос: как можно определить состояние
> конкретного соединения (имея переменную SOCKET).
>
> PS: ситуация описана очень кратко, и поэтому если что-то
> непонятно, могу уточнить.
[C++] Вопрос по TCP 10.12.01 16:45  
Автор: Wizard(2) Статус: Незарегистрированный пользователь
<"чистая" ссылка>
На сколько я смог разобраться на скорую руку это немного не то - там использование RAS, а у мне надо Windows Socket.

> стоит заглянуть сюда: http://program.dax.ru последняя
> рассылка был посвещена этой теме, правда там сделно на
> дельфи, но переделать проблемы нет - тоже апи.
>
>
> > Теперь собственно вопрос: как можно определить
> состояние
> > конкретного соединения (имея переменную SOCKET).
> >
[C++] Вопрос по TCP 11.12.01 01:31  
Автор: Korsh <Мельников Михаил> Статус: Elderman
<"чистая" ссылка>
> На сколько я смог разобраться на скорую руку это немного не
> то - там использование RAS, а у мне надо Windows Socket.
>
> > стоит заглянуть сюда: http://program.dax.ru последняя
> > рассылка был посвещена этой теме, правда там сделно на
> > дельфи, но переделать проблемы нет - тоже апи.
> >
> >
> > > Теперь собственно вопрос: как можно определить
> > состояние
> > > конкретного соединения (имея переменную SOCKET).
> > >
Если ты имеешь в виду этот сокет:
TServerWinsocket *Socket, то он даёт полную информацию о соединении,
читай хелп в Builder.
[C++] Вопрос по TCP 11.12.01 10:21  
Автор: Wizard(2) Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> > На сколько я смог разобраться на скорую руку это
> немного не
> > то - там использование RAS, а у мне надо Windows
> Socket.
> >
> > > стоит заглянуть сюда: http://program.dax.ru
> последняя
> > > рассылка был посвещена этой теме, правда там
> сделно на
> > > дельфи, но переделать проблемы нет - тоже апи.
> > >
> > >
> > > > Теперь собственно вопрос: как можно
> определить
> > > состояние
> > > > конкретного соединения (имея переменную
> SOCKET).
> > > >
> Если ты имеешь в виду этот сокет:
> TServerWinsocket *Socket, то он даёт полную информацию о
> соединении,
> читай хелп в Builder.

Да у меня вообще-то Microsoft Visual C++ и пишу на API.
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 1 s   Design: Vadim Derkach