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 ответов

20 просмотров

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

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

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

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта