ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
 |
|

17.11.2007, 13:45
|
|
Banned
Регистрация: 03.08.2007
Сообщений: 313
Провел на форуме: 951141
Репутация:
291
|
|
проблема в том что мне что сортировать нужно не только имени но и размеру
(обращаться нужно только к именам после сортировки)
поэтому думаю как лучше реализовать..сейчас как раз с std и думаю
у меня vc6 че-то ошибки выдает когда использую list
скачал sdk пишет про секьюрити куки =\\\\\\\\\\\\\\\\\\\
думаю может на vc 2008 ?писать
я так понял для сорт можно свою функцию задавать..
typedef vector<pair<__int64,string> > viListImage;
typedef pair<__int64,string> piListimage;// размер и имя
bool ptr_less(const piListimage& lhs, const piListimage& rhs)
{
return lhs.first < rhs.first;
}
sort(viLstImg->begin(),viLstImg->end(),&ptr_less);
Последний раз редактировалось inv; 17.11.2007 в 14:23..
|
|
|

17.11.2007, 14:10
|
|
Banned
Регистрация: 18.05.2005
Сообщений: 1,981
Провел на форуме: 1941233
Репутация:
2726
|
|
> я так понял для сорт можно свою функцию задавать..
нет
> думаю может на vc 2008 ?писать
тогда уж vc7 (2003)
> сейчас как раз с std и думаю
у меня vc6 че-то ошибки выдает когда использую list
по идее, это считается небезопасным (как, например, gets())
что конкретно - хз
> проблема в том что мне что сортировать нужно не только имени но и размеру
сначала - по имени, потом по размеру, или наоборот.
|
|
|

17.11.2007, 14:24
|
|
Banned
Регистрация: 03.08.2007
Сообщений: 313
Провел на форуме: 951141
Репутация:
291
|
|
сначала по размеру
я выше привел пример как сделал,ща проверяю как он работает)
Код:
d:\test\p1
path:d:\test\p1\abcde5.jpg size:8678
path:d:\test\p1\abcde3.jpg size:11788
path:d:\test\p1\abcde2.jpg size:21068
path:d:\test\p1\abcde4.jpg size:22089
path:d:\test\p1\abcde.jpg size:23078
d:\test\p1\p1_1
path:d:\test\p1\p1_1\abcde.jpg size:23078
d:\test\p1\p1_1\p1_1_1
path:d:\test\p1\p1_1\p1_1_1\abcde.jpg size:23078
d:\test\p1\p1_1\p_1_1_2
path:d:\test\p1\p1_1\p_1_1_2\abcde.jpg size:23078
d:\test\p2
path:d:\test\p2\abcde.jpg size:23078
Press any key to continue
вроде пашет
(мне нужно сначала найти все подпапки потом сортировать там файлы)
Последний раз редактировалось inv; 17.11.2007 в 14:27..
|
|
|

17.11.2007, 14:47
|
|
Banned
Регистрация: 03.08.2007
Сообщений: 313
Провел на форуме: 951141
Репутация:
291
|
|
вообщем сделал так
Код:
typedef vector<pair<__int64,string> > viListImage;
typedef pair<__int64,string> piListimage;// размер и имя
....
bool ptr_less_size(const piListimage& lhs, const piListimage& rhs)
{
return lhs.first < rhs.first;
}
bool ptr_less_name(const piListimage& lhs, const piListimage& rhs)
{
return rhs.second.compare(lhs.second)+1; //compare возращает -1 0 1
}
....
sort(viLstImg->begin(),viLstImg->end(),&ptr_less_size);
....
sort(viLstImg->begin(),viLstImg->end(),&ptr_less_name);
сортиврока по размеру и имени вроде работает..
|
|
|

21.11.2007, 23:28
|
|
Новичок
Регистрация: 21.11.2007
Сообщений: 3
Провел на форуме: 3838
Репутация:
5
|
|
Здравствуйте, я первый раз на этом замечательном сайте и меня интересует следующий вопрос:
Если сервер посылает/принимает данные через startinf.hStdInput=startinf.hStdOutput = startinf.hStdError = socket;
То как принимать данные клиентом?
Я пытался через баальшуйщий буффер:
char l_buf [4096];
...
recv(socket, l_buf, 4096);
...
Но передовалась только одна строка.
Тогда я пытался сделать так:
...
char buff_in [128]
...
while (true)
{recv(socket, buff_in,128);
if (buff_in == etalon_void_buffer) break;//etalon buffer -- eto //ZeroMemory(etalon_void_buffer,128);
printf (buff_in);
ZeroMemory(buff_in,128);
}
scanf(%s,buff_out);
send(socket, buff_out, 128);
...
Но так почему-то не выполняется сканф и посылка.
В приведённом коде могут быть орфографические/синтаксические ошибки, не обращайте внимания, в настоящим их точно нет.
Помогите пожалуйста рашить мою проблему.
Последний раз редактировалось Dunadan007; 22.11.2007 в 15:15..
|
|
|

22.11.2007, 14:26
|
|
Участник форума
Регистрация: 22.11.2007
Сообщений: 159
Провел на форуме: 732568
Репутация:
156
|
|
while (true)
{recv(socket, buff_in,128);
if (buff_in == etalon_void_buffer) break;//etalon buffer -- eto //ZeroMemory(etalon_void_buffer,128);
ZeroMemory(buff_in,128);
}
Вот это у тебя получается безконечный цикл. Ты в ифе сравниваешь два адреса которые всегда не равны, и поэтому break никада не выполнится...
Чтобы избежать этой проблемы можно либо передавать какуюто завершающую последовательность символов (чтобы получающая сторона знала что это последние передаваемые данные) либо передавать вначале размер данных а потом сами данные чтобы получающая сторона знала сколько их принять
Кстати я тоже тут впервые 
|
|
|

22.11.2007, 18:18
|
|
Новичок
Регистрация: 21.11.2007
Сообщений: 3
Провел на форуме: 3838
Репутация:
5
|
|
А можно поподробней и поконкретней?
Желательно с примерами/рисунками.
|
|
|

22.11.2007, 22:10
|
|
Участник форума
Регистрация: 22.11.2007
Сообщений: 159
Провел на форуме: 732568
Репутация:
156
|
|
Ну вот смотри... Допустим тебе нужно переслать строку: Hello World.
Ты считаешь сколько символов в строке. Умножаешь это количество на то сколько места занимает 1 символ. (char занимает 1 байт).
И результат пересылаешь через сокет принимающей стороне.
А после этого шлёшь уже и саму строку.
Принимающая сторона теперь знает - "щас мне придёт 12 байт информации" и начинает принимать данные до тех пор пока не примет все 12 байт
Например если ты будешь запрашивать какуюнить вебстраничку тебе в ответ придёт чтонибудь такое
HTTP/1.x 200 OK
Cache-Control: private
Content-Type: text/html; charset=UTF-8
Content-Encoding: gzip
Server: gws
Content-Length: 2200
Date: Thu, 22 Nov 2007 18:07:06 GMT
и после этого сама страничка. Где поле Content-Length: 2200 покажет сколько эта страничка занимает места, т.е. какое количество информации программа которая её принимает должна принять.
Хоть и без рисунков но помоему подробней уже некуда 
|
|
|

22.11.2007, 22:40
|
|
Новичок
Регистрация: 21.11.2007
Сообщений: 3
Провел на форуме: 3838
Репутация:
5
|
|
Эт то я понял, для меня остаётся тайной то , как подсчитать кол-во символов в массиве чаров, не используя всякие Mfc , Vcl и другие.
ПС: а форум не позволяет писать с капсом, круто.
|
|
|

22.11.2007, 22:47
|
|
Участник форума
Регистрация: 22.11.2007
Сообщений: 159
Провел на форуме: 732568
Репутация:
156
|
|
например функция strlen
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|