Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Неблокирующие сокеты, WinSock2 
:(
    Опции темы
reCoder
  Дата 6.11.2006, 20:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 27.9.2006

Репутация: нет
Всего: нет



Здраствуйте.
У меня появилась следующая проблема:

Пишу на C++ под Visual Studio .NET, используя обычные сокеты.
Но появилась необходимость реализовать заместь блокирующих - неблокирующие сокеты.

Обьясните пожалуйста в чем разница в реализации таких приложений ?
Что и как заменить ?
PM MAIL   Вверх
Romikgy
Дата 6.11.2006, 21:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 8
Всего: 146



http://vmk.ugatu.ac.ru/sockwin.htm
http://hellknights.void.ru/articles/0x48k-winsockets.html
а вообще разница в том , что на всякое событие , генерится мессага


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
reCoder
  Дата 6.11.2006, 21:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 27.9.2006

Репутация: нет
Всего: нет



Спасибо.
Хочу рассказать суть проблемы, которая свела мою работу на ноль, сижу в ужасном состоянии.

И так. Я получаю ответ от сервера.

while (true)
{
   int iLen = recv(Socket, .... ); 
   if (iLen <= 0) break;
}

Получаю я например 20 символов. Общий размер данных, которые я хочу получить - 24. 
Получив первые 20, выполняется следующий шаг цикла, в котором получаю 4 байта.
Т.к. число 4 не подходит под условие завершения цикла, выполняется переход в к следующему шагу.

И вот сдесь проблема. Сокеты использую блокирующие, уже нет данных которые нужно получать, и программа "виснет" в ожидании ответа сервера.

Что делать ? Не хочу использовать асинхронные/неблокирующие сокеты, т.к. уже значительная часть программы написана и прекрасно работает.

Что делать ?

 smile  

Это сообщение отредактировал(а) reCoder - 6.11.2006, 21:27
PM MAIL   Вверх
Romikgy
Дата 6.11.2006, 21:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 8
Всего: 146



передай сначало размер пакета, а потом сам пакет


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
reCoder
Дата 6.11.2006, 21:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 27.9.2006

Репутация: нет
Всего: нет



Тоесть ? Можно пример ?
Или поясните подробней пожалуйста !
PM MAIL   Вверх
Romikgy
Дата 6.11.2006, 22:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 8
Всего: 146



а какой здесь пример те нужен, все делаешь как и раньше, но перед передачей символов, передай число  , еол_во символов в буфере,
а на приемной стороне принимаешь это число , и после этого создаешь приемный буфер , и в него принимаешь необходимое число байт,
что не понятно ?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
reCoder
Дата 6.11.2006, 22:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 27.9.2006

Репутация: нет
Всего: нет



Я пишу FTP клиент, а не сервер и клиент.
Так что возможности этот процесс контролировать - нету.
PM MAIL   Вверх
Romikgy
Дата 6.11.2006, 23:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 8
Всего: 146



имхо в фтп клиент имеет возможность спросить у сервера размер файла


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
reCoder
  Дата 6.11.2006, 23:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 27.9.2006

Репутация: нет
Всего: нет



Причем сдесь размер файла ?
Я даже не могу получить нормально приветственное сообщение !

Понимаете, я не могу получить нормально и в полном обьеме ответ сервера !

Неужели тяжело пример рабочий показать, или указать правельное направление !?

Это сообщение отредактировал(а) reCoder - 6.11.2006, 23:11
PM MAIL   Вверх
Romikgy
Дата 7.11.2006, 10:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 8
Всего: 146



http://sources.ru/cpp/cpp_network.shtml#2

Цитата(reCoder @  6.11.2006,  22:10 Найти цитируемый пост)
указать правельное направление

А я тебе что направление не давал?! Как ты описал свою проблему такие ответы я и давал!
Если бы ты в первом посте описал что ты делаешь , и что не получается , то и получил бы правильный ответ гараздо раньше!

PS как говорили древние мудрецы, правильно поставленый вопрос , это 50 % ответа!!!!


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
reCoder
Дата 7.11.2006, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 27.9.2006

Репутация: нет
Всего: нет



спасибо.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0549 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.