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

9 просмотров

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

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

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

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

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

#include <stdio.h> #include <stdlib.h> #include <time.h> void mass_first_generate(int mass[5][7]) {     for (int N = 0; N < 5; N++) {         for (int A = 0; A < 7; A++) {   ...
Чувак
6
https://www.linkedin.com/posts/ugama-benedicta-kelechi-codergirl-103041300_mobiledevelopment-fluttertraining-handsonlearning-activity-7263445699227254784-IdHB?utm_source=share...
CoderGirl
16
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Помогите пожалуйста. Делаю систему плагинов. Проблема сейчас в такая: плагины загружаются в основном потоке. FLibHandle := SafeLoadLibrary(FFileName) Но нужно еще выполнить фу...
Илья 🤣
10
Ну вот просто даже давайте вот как. Какой нибудь конкретный кейс, можете в пример привести, где бч работает и приносит прикладную пользу, а не просто что бы было? Не крипту.
Alexander Andreev
22
объясните пожалуйста, почему функция не работает должным образом? вроде должно брать активное окно сравнивать его размер с размером экрана, и если есть совпадение = true прове...
JF
12
лучше скажите, причём тут паскаль?
Alexey Kulakov
36
Гляньте, че бывает: Сегодня по одному проекту одной вебстудии делал проект небольшой, на их хостинге. На Modx revo. В определенный момент , работая в админке, вдруг перестал р...
Artem
7
Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
12
> Копаем глубже > Следующий момент был, когда я спросил его, знает ли он JavaScript. Он ответил, что его учили работать с C#. Я тоже в университете писал на C#, но даже там мн...
Oleg Volkov
4
Карта сайта