170 похожих чатов

Привет всем еще раз, со вчера мучаюсь с winsock... в

частности с recv
- Как мне получить весь ответ полностью?
Что я делаю - посылаю запрос на авторизацию на сервер ftp по 21 порту, я должен получить ответы:
220 Microsoft FTP Service
331 Anonymous access allowed, send identity (e-mail name) as password.
230 Anonymous user logged in.

Последняя и предпоследняя строка может варироваться... елсли я не ставлю Sleep хотябы в 500 шлет только первую строку и все.
Мне тут советовали собирать по частям, ок закидываю в цикл, принимает все байты, тоесть все строки и зависает recv... Ok! Просим помощи у ioctlsocket(brute, FIONBIO, &iMode_1); (Неблокирующий сокет) вырывает снова первую строку и кидает всегда -1... Как быть, кто может нормально подсказать, я не прошу мне делать что-то, просто дайте ответ развернутый или статью, где описана такая же проблема...

3 ответов

7 просмотров

Это не проблема. и не ошибка, это - фича. У тебя есть два варианта работы: блокирующий и НЕблокирующий. если удобно работать с первым, но не хочешь блокировки главного потока, то используешь второй поток. если вариант два (НеБлокирующий) ты должен организовать некий цикл опроса. либо попросить помощи ОСи чтобы она тебе сказала чувак есть данные получите распишитесь... в Linux это epool. в винде ХЗ. Если кроссплатформенно без гемо...я то можно на Qt. там тебе скажут когда данные есть...

Да никак же. Это определяется твоим протоколом обмена . В каких -то протоколах заранее посылают длинну, в каких-то есть STOP WORD и так далее. Универсальных решений на уровне TCP нет. TCP -- это как это там канальный протокол, тебе нужен более высокий, уровня приложения (на базе TCP), он ТВОЙ СОБСТТВЕННЫЙ. и кроме тебя самого никто не знает как там размер "пакета" фиксировать.

Если это FTP -- читай именно про FTP, как там коней передачи файла фиксируется, либо используй более высокоуровневые библиотеки, что работают именно с FTP (licurl, CPR -- как пример)

Похожие вопросы

Обсуждают сегодня

Какой-то там пердун в 90-х решил, что есть какая-то разная типизация. Кого вообще это волнует?
КТ315
49
void terminal_scroll() { memmove(terminal_buffer, terminal_buffer + VGA_WIDTH, buffer_size - VGA_WIDTH); memset(terminal_buffer + buffer_size - VGA_WIDTH, 0, VGA_WIDTH); ...
Егор
47
Всем привет! Подскажите, пожалуйста, в чем ошибка? Настраиваю подключение к MySQL. Либы лежат рядом с exe. Все как по "учебнику"
Евгений
16
А можете как-то проверить меня по знаниям по ассемблеру?
A A
132
Здравствуйте! У меня появилась возможность купить книгу "Изучай Haskell во имя добра!". Но я где-то слышал, что эта книга устарела. Насколько это правда??
E
22
Здравствуйте! Я вот на stepic решаю задачи на хаскеле https://stepik.org/lesson/8443/step/8?unit=1578 мой код import Data.List (isInfixOf) removing :: String -> [String] ->...
E
10
Камрады, кто тесно работал с vtv, хотел уточнить. Ширина column задаётся жёстко на этапе создания дерева или можно в рантайме ее менять программно (не мышкой)?
Ed Doc
10
да ладно ... что там неочевидного ? глянуть в исх-ки датасета и/или кверика чтобы понять в каком месте и как выполняется обращения к св-вам blablaSQL - минутное дело, даже е...
Сергей
7
Здесь для arm кто-нибудь кодит ?
Nothing
52
Всем привет, у меня есть сервер принимающий входящие HTTP подключения, как проверить, что подключение было через прокси или нет, есть какие то поля в заголовках по которым мо...
Кибер Бомж
8
Карта сайта