| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Неблокирующие сокеты |
| Автор: reCoder 6.11.2006, 20:18 |
| Здраствуйте. У меня появилась следующая проблема: Пишу на C++ под Visual Studio .NET, используя обычные сокеты. Но появилась необходимость реализовать заместь блокирующих - неблокирующие сокеты. Обьясните пожалуйста в чем разница в реализации таких приложений ? Что и как заменить ? |
| Автор: Romikgy 6.11.2006, 21:03 |
| http://vmk.ugatu.ac.ru/sockwin.htm http://hellknights.void.ru/articles/0x48k-winsockets.html а вообще разница в том , что на всякое событие , генерится мессага |
| Автор: reCoder 6.11.2006, 21:16 |
| Спасибо. Хочу рассказать суть проблемы, которая свела мою работу на ноль, сижу в ужасном состоянии. И так. Я получаю ответ от сервера. while (true) { int iLen = recv(Socket, .... ); if (iLen <= 0) break; } Получаю я например 20 символов. Общий размер данных, которые я хочу получить - 24. Получив первые 20, выполняется следующий шаг цикла, в котором получаю 4 байта. Т.к. число 4 не подходит под условие завершения цикла, выполняется переход в к следующему шагу. И вот сдесь проблема. Сокеты использую блокирующие, уже нет данных которые нужно получать, и программа "виснет" в ожидании ответа сервера. Что делать ? Не хочу использовать асинхронные/неблокирующие сокеты, т.к. уже значительная часть программы написана и прекрасно работает. Что делать ? |
| Автор: Romikgy 6.11.2006, 21:46 |
| передай сначало размер пакета, а потом сам пакет |
| Автор: reCoder 6.11.2006, 21:53 |
| Тоесть ? Можно пример ? Или поясните подробней пожалуйста ! |
| Автор: Romikgy 6.11.2006, 22:49 |
| а какой здесь пример те нужен, все делаешь как и раньше, но перед передачей символов, передай число , еол_во символов в буфере, а на приемной стороне принимаешь это число , и после этого создаешь приемный буфер , и в него принимаешь необходимое число байт, что не понятно ? |
| Автор: reCoder 6.11.2006, 22:54 |
| Я пишу FTP клиент, а не сервер и клиент. Так что возможности этот процесс контролировать - нету. |
| Автор: Romikgy 6.11.2006, 23:05 |
| имхо в фтп клиент имеет возможность спросить у сервера размер файла |
| Автор: reCoder 6.11.2006, 23:10 |
| Причем сдесь размер файла ? Я даже не могу получить нормально приветственное сообщение ! Понимаете, я не могу получить нормально и в полном обьеме ответ сервера ! Неужели тяжело пример рабочий показать, или указать правельное направление !? |
| Автор: Romikgy 7.11.2006, 10:08 |
| http://sources.ru/cpp/cpp_network.shtml#2 А я тебе что направление не давал?! Как ты описал свою проблему такие ответы я и давал! Если бы ты в первом посте описал что ты делаешь , и что не получается , то и получил бы правильный ответ гараздо раньше! PS как говорили древние мудрецы, правильно поставленый вопрос , это 50 % ответа!!!! |
| Автор: reCoder 7.11.2006, 14:28 |
| спасибо. |