ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #441  
Старый 17.11.2007, 13:45
inv
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..
 
Ответить с цитированием

  #442  
Старый 17.11.2007, 14:10
KEZ
Banned
Регистрация: 18.05.2005
Сообщений: 1,981
Провел на форуме:
1941233

Репутация: 2726


По умолчанию

> я так понял для сорт можно свою функцию задавать..

нет

> думаю может на vc 2008 ?писать

тогда уж vc7 (2003)

> сейчас как раз с std и думаю
у меня vc6 че-то ошибки выдает когда использую list

по идее, это считается небезопасным (как, например, gets())
что конкретно - хз

> проблема в том что мне что сортировать нужно не только имени но и размеру

сначала - по имени, потом по размеру, или наоборот.
 
Ответить с цитированием

  #443  
Старый 17.11.2007, 14:24
inv
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..
 
Ответить с цитированием

  #444  
Старый 17.11.2007, 14:47
inv
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);
сортиврока по размеру и имени вроде работает..
 
Ответить с цитированием

  #445  
Старый 21.11.2007, 23:28
Dunadan007
Новичок
Регистрация: 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..
 
Ответить с цитированием

  #446  
Старый 22.11.2007, 14:26
reversys
Участник форума
Регистрация: 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 никада не выполнится...

Чтобы избежать этой проблемы можно либо передавать какуюто завершающую последовательность символов (чтобы получающая сторона знала что это последние передаваемые данные) либо передавать вначале размер данных а потом сами данные чтобы получающая сторона знала сколько их принять

Кстати я тоже тут впервые
 
Ответить с цитированием

  #447  
Старый 22.11.2007, 18:18
Dunadan007
Новичок
Регистрация: 21.11.2007
Сообщений: 3
Провел на форуме:
3838

Репутация: 5
По умолчанию

А можно поподробней и поконкретней?
Желательно с примерами/рисунками.
 
Ответить с цитированием

  #448  
Старый 22.11.2007, 22:10
reversys
Участник форума
Регистрация: 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 покажет сколько эта страничка занимает места, т.е. какое количество информации программа которая её принимает должна принять.

Хоть и без рисунков но помоему подробней уже некуда
 
Ответить с цитированием

  #449  
Старый 22.11.2007, 22:40
Dunadan007
Новичок
Регистрация: 21.11.2007
Сообщений: 3
Провел на форуме:
3838

Репутация: 5
По умолчанию

Эт то я понял, для меня остаётся тайной то , как подсчитать кол-во символов в массиве чаров, не используя всякие Mfc , Vcl и другие.
ПС: а форум не позволяет писать с капсом, круто.
 
Ответить с цитированием

  #450  
Старый 22.11.2007, 22:47
reversys
Участник форума
Регистрация: 22.11.2007
Сообщений: 159
Провел на форуме:
732568

Репутация: 156
По умолчанию

например функция strlen
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Часто задаваемые вопросы по MySQL Серый PHP, PERL, MySQL, JavaScript 5 28.12.2006 18:26
Интернетчики задали российскому президенту очень странные вопросы podkashey Мировые новости 4 07.07.2006 16:53
Вопросы по Ipb 2.0 Voodoo_People Форумы 26 15.02.2005 22:57



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ