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

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

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

Delphi и WinSock
  #1  
Старый 19.04.2010, 01:13
Nicker
Новичок
Регистрация: 18.04.2010
Сообщений: 6
Провел на форуме:
11283

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

Есть такая проблема хочу с помощью WinSock на Delphi качнуть рисунок, страницу тяну нормально получаю хедер и тело, а когда пытаюсь таким же образом вытянуть рисунок оно думает где-то 20-30сек и дает мне ток хедер и пустой текст, сам код:

Код:
Data := TStringList.Create;
WSAStartup(makeword(2,0),info);
Socket1:=Socket(AF_INET,SOCK_STREAM,0);
SockAddr1.sin_family:=AF_INET;
SockAddr1.sin_addr.S_addr:=inet_addr(PAnsiChar('127.0.0.1')); 
SockAddr1.sin_port:=htons(80);
connect(Socket1, SockAddr1, sizeof(SockAddr1));

Buffer1:='GET /jpg.php HTTP/1.0' + #13#10 +
'Host: localhost' + #13#10 +
'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.9) Gecko/20100315 Firefox/3.5.9' + #13#10 +
'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' + #13#10 +
'Accept-Language: ru,en-us;q=0.7,en;q=0.3' + #13#10 +
//'Accept-Encoding: gzip,deflate' + #13#10 +
'Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7' + #13#10 +
'Keep-Alive: 300' + #13#10 +
'Connection: keep-alive' + #13#10 +
'Referer: http://dasparion.ws/' + #13#10 +
'Cookie: amm=1;' + #13#10 +
'Cache-Control: max-age=0' + #13#10 +
#13#10;


send(Socket1,Buffer1[1],Length(Buffer1),0);
repeat
    FillChar(Buffer2,SizeOf(Buffer2),0);
    d:=recv(Socket1,Buffer2,SizeOf(Buffer2),0);
    for i:=1 to d do Data.Add(Buffer2[i]);
until d<=0;
try
  for i:= 0 to Data.Count - 1 do
  Msg:= Msg  + Data.Strings[i];
finally
  Data.Free;

Memo1.Text:=msg;

Closesocket(Socket1);
WSACleanup;
 
Ответить с цитированием

  #2  
Старый 19.04.2010, 18:41
Chrome~
Постоянный
Регистрация: 13.12.2008
Сообщений: 354
Провел на форуме:
1747641

Репутация: 175
Отправить сообщение для Chrome~ с помощью ICQ
По умолчанию

Скорее всего проблема из-за:
Код:
'Keep-Alive: 300' + #13#10 +
'Connection: keep-alive' + #13#10 +
В вашем случае должно быть:
Код:
'Connection: close' + #13#10 +
 
Ответить с цитированием

  #3  
Старый 19.04.2010, 18:51
МongBa†
Познающий
Регистрация: 12.05.2009
Сообщений: 45
Провел на форуме:
255342

Репутация: 28
Отправить сообщение для МongBa† с помощью ICQ
По умолчанию

Не , конекшен здесь не при чем...

Мемо не слишком то подходит под изображения
сохраняй сразу в файл...

кстати и в цикле
repeat
FillChar(Buffer2,SizeOf(Buffer2),0);
d:=recv(Socket1,Buffer2,SizeOf(Buffer2),0);
for i:=1 to d do Data.Add(Buffer2[i]);
until d<=0;
ты вообще нещадно крамсаеш этот несчастный рисунок, разбивая его по строкам, т.е. в тело рисунка автоматом вбиваются #13#10 )


вобщем писал в слепую... пробуй:

var failik:text;
Код:
send(Socket1,Buffer1[1],Length(Buffer1),0);
assignfile(failik,'.\123.jpg');
rewrite(failik);
repeat
   FillChar(Buffer2,SizeOf(Buffer2),0);
   d:=recv(Socket1,Buffer2,SizeOf(Buffer2),0);
   for i:=1 to d do writeln(failik,Buffer2[i]);
until d<=0;
closefile(failik);

Последний раз редактировалось МongBa†; 19.04.2010 в 19:03..
 
Ответить с цитированием

  #4  
Старый 19.04.2010, 19:35
Nicker
Новичок
Регистрация: 18.04.2010
Сообщений: 6
Провел на форуме:
11283

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

Цитата:
Сообщение от МongBa†  
Не , конекшен здесь не при чем...

Мемо не слишком то подходит под изображения
сохраняй сразу в файл...

кстати и в цикле
repeat
FillChar(Buffer2,SizeOf(Buffer2),0);
d:=recv(Socket1,Buffer2,SizeOf(Buffer2),0);
for i:=1 to d do Data.Add(Buffer2[i]);
until d<=0;
ты вообще нещадно крамсаеш этот несчастный рисунок, разбивая его по строкам, т.е. в тело рисунка автоматом вбиваются #13#10 )


вобщем писал в слепую... пробуй:

var failik:text;
Код:
send(Socket1,Buffer1[1],Length(Buffer1),0);
assignfile(failik,'.\123.jpg');
rewrite(failik);
repeat
   FillChar(Buffer2,SizeOf(Buffer2),0);
   d:=recv(Socket1,Buffer2,SizeOf(Buffer2),0);
   for i:=1 to d do writeln(failik,Buffer2[i]);
until d<=0;
closefile(failik);
Фаил создается но там куча мусора, от ответа сервака и каждый символ с новой строчки, походу мой цикл был правильный, как вытянуть жпг рисунок с этого мусора?
 
Ответить с цитированием

  #5  
Старый 19.04.2010, 19:46
Sunstrider
Banned
Регистрация: 09.04.2010
Сообщений: 181
Провел на форуме:
475927

Репутация: 12
Отправить сообщение для Sunstrider с помощью ICQ
По умолчанию

Мен а ты как начинал вин сок изучать слей источник,плз
 
Ответить с цитированием

  #6  
Старый 19.04.2010, 20:17
Ins3t
Участник форума
Регистрация: 18.07.2009
Сообщений: 272
Провел на форуме:
2083691

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

2Sunstrider:
https://forum.antichat.ru/thread123692.html
Так же есть такая классная штука как MSDN.




-------
P.S.: Нет-нет, не подумайте, я к делфи ни каким боком не отношусь.
 
Ответить с цитированием

  #7  
Старый 19.04.2010, 20:24
Nicker
Новичок
Регистрация: 18.04.2010
Сообщений: 6
Провел на форуме:
11283

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

Цитата:
Сообщение от Sunstrider  
Мен а ты как начинал вин сок изучать слей источник,плз
Гуглил находил статьи клепад по примерам, чесно говоря во всем инете нету нечего нормального по ним + кроме форума античата про винсоки не знают не на одном форуме))))



+ тема остается актуальна как с этого сделать рисунок:

Код:
HTTP/1.1 200 OK
Server: nginx
Date: Mon, 19 Apr 2010 15:39:55 GMT
Content-Type: image/jpeg
Connection: close
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Content-Length: 2377

яШяа JFIF      яю ;CREATOR: gd-jpeg v1.0 (using IJG JPEG v70), quality = 90
яЫ C 




яЫ C		

яА  7 i" яД           	
яД µ   } !1AQa"q2Ѓ‘Ў#B±БRСр$3br‚	
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzѓ„…†‡?‰Љ’“”•–—˜™љўЈ¤Ґ¦§Ё©ЄІіґµ¶·ё№єВГДЕЖЗИЙКТУФХЦЧШЩЪбвгдежзийкстуфхцчшщъяД        	
яД µ  w !1AQaq"2ЃB‘Ў±Б	#3RрbrС
$4б%с&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ѓ„…†‡?‰Љ’“”•–—˜™љўЈ¤Ґ¦§Ё©ЄІіґµ¶·ё№єВГДЕЖЗИЙКТУФХЦЧШЩЪвгдежзийктуфхцчшщъяЪ   ? эSўЉ( ўЉ( ўЉжµп‰~рµкЪjю"УtлўU|«‹•FЛOђ@рq@ТoDЋ–ЉОјс•§ЪGus©Ъ[ЫHURi'UV,p*тI w®oЕї|аT™µПШШ?Ц
ЖFOЁ@Hю”м5KDЋЦЉзьсГґцѕрЦ№c®Z)ҐІ˜H‘ђ:†є
Bi§fQE
(ўЂ
(ўЂ
е>(|FУ~ш6чД˜y–-±[ZB3-ЭГќ±AооД(хДшпцѓµУѕ"[ь9рЌЏь$Ю9•k›hд› §~ШЬAЛtтєьNс—нOыWh'–ЧГнрЮтлXїёы8ћ«ИRXчc(\–кц*#кОЪ8iOЮћ‘JпУюЗҐ|hэ±ј[р5u›OxnВУTџГ«¬i0ЕpЈќо*cKYIОЂ з7VшAЄьYэќ[АѕрЭХОї©щ3j^7сC5І›ЙЅЕМAГM ОU@UQАОјгцЈшZ‹ы_| °Х<Q©x§Дљ*ъI{=т$pБk±јI1ЁPA;¶rx 
ыЛЗю6‡Аъ*ЭЕНдТ,VцЫ°\зжcиЁ»ќЏўџj§hҐcЄn4cMТ^уЧЇGcтџгOАЇiЯґЏГ„QxПTЦо$·µMД«R+Hг.D`&Ь№RДдЧк—†~шГ~ґТ#Т*§H*ЦdёЊI$ЗhОн’ДтI'Ѕ|eыйтьtэЁ~'|lФTkHТњoхЊ3ЩP*ЋеЎфЇ¤їkЏцџіЧВ-__уЎюШhZ-:ЪFщ¤™†ё‚}Ѓ§6ЫQ+*•g:Э%WЇа|/р›DvэЎh«_
кчћр–“ew<’hwoQK ЙpAБщФдt ‘ТЅц?ш№с»Жя іЈвQu¦кiіЮНцЅїМѕEц«/–E9aёЖЮ|ГЦ—?	aЅjъYDю8ш»©®—nyirgsЋЕw)чa_mшЭаэ•?aЛЫ{EЋЦзEря ЩўLя J˜a°;џ2Fo|№v:±-?u$Ы’Kд’oжЩ±аїЫ'А^$шqбПк7mўЫк©˜L3¤ОБ|©%ы*еЃдзW»Ј¬Ё®ЊeYNAўѕ"ш‘ръЯаЧьzГБ[Eo®kVъnћРћZ{ы»˜ZR8е—20цЊzWЪz=‹iљEЌ›ЙжЅј	H7P	Зlв°’[ЈЗЇ
q\Фц»_$\ўЉ*@®/гGДX>ь'сgЊgPлЈiУ]$mТIBюн?аNUн+–шЈрчNш*ры^р–Є\XjЦЇm#!Г.G=ББJk}K‡/2жЪъџ8Б7ј$у| Ф>$jзн^(с®Ґ=хХМЈt‰№HгyЫ…Ь?ЮцЇ:ш}*xoц{я ‚†ьX\[xcIс˜·6чО!·rН’|нтЏ˜?p8ИЇRэ™ь)с3цdрcь9Х|+'Њф«+№HЦt{˜У|RH&Y™|°Ґ‰кxа
чБрпJсћЌuвН'MЦuл8WuЬ¶КЕdЖX)<нОp+W+7Щћ•JК5j7¬e¦Џ¦–ы¬|“ыCьшЌсЯЗюшБриЩ±С®™4»{чЩжZ/+r8 щЋ“ћUРњr+ўшУбO‹~Фґ›жс—ЕНzИйpк:}˜іТь?a+©ќDТ6H©‚Kc·Ђц   А…-O;РБbд№W*ґvюї«џ9~ЖіпЊ?gя …я рЋш“TТ‹12¬R4…$l—i%|o9< *uaЊZш©ыь>шУЄ>§гїk·б6BЧZ¬‚(?r4Ъ*rkи:*yќоdс]GU;7Шш3Vя ‚lkЪ‹|©иўХ4o
^%Оџ*лvТ¬QЁ‘\Ж$Yан ьјЂJйя nлџш®ПБћкSш=5Ѕ?PЧu»4ы]*…_ч?ЛeURy,Ђ`ѓћ+мК*№ЭУf«QО3©Ї.Э?#е?ЪЕєOЋ?hїЩЯбЕ•еҐЬ'Yёс5ЬC4?dґv¶?„>щ°чG+кКгхЯ„>с'‹4п_шvЕьK§¶ыmb(ь«ёшЖ<ФГ2г#i$rxж»
–о’F'FЏEшЮбET˜Q@Q@Q@Q@Q@Q@Q@яЩ
 
Ответить с цитированием

  #8  
Старый 19.04.2010, 21:44
Nicker
Новичок
Регистрация: 18.04.2010
Сообщений: 6
Провел на форуме:
11283

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

Вот еще одна попытка файл все равно не является рисунком((

Код:
procedure TForm1.Button1Click(Sender: TObject);
var msg:ansistring;
i,d,len:integer;
Data  : TStringList;
data_flag : boolean;
h, rb : dword;

begin
Data := TStringList.Create;
WSAStartup(makeword(2,0),info);
Socket1:=Socket(AF_INET,SOCK_STREAM,0);
SockAddr1.sin_family:=AF_INET;
SockAddr1.sin_addr.S_addr:=inet_addr(PAnsiChar('127.0.0.1'));
SockAddr1.sin_port:=htons(80);
connect(Socket1, SockAddr1, sizeof(SockAddr1));

Buffer1:='GET /Jpeg.php HTTP/1.1' + #13#10 +
'Host: localhost' + #13#10 +
'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.9) Gecko/20100315 Firefox/3.5.9' + #13#10 +
'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' + #13#10 +
'Accept-Language: ru,en-us;q=0.7,en;q=0.3' + #13#10 +
//'Accept-Encoding: gzip,deflate' + #13#10 +
'Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7' + #13#10 +
//'Keep-Alive: 300' + #13#10 +
//'Connection: keep-alive' + #13#10 +

'Referer: http://localhost/' + #13#10 +
'Cookie: x=daa3917f7f611102a6ffb9f76c9abd243fc64dc7; amm=1;' + #13#10 +
'Connection: close' + #13#10 +
'Cache-Control: max-age=0' + #13#10 +
#13#10;

len:=0;
send(Socket1,Buffer1[1],Length(Buffer1),0);
repeat
    FillChar(Buffer2,SizeOf(Buffer2),0);
    d:=recv(Socket1,Buffer2,SizeOf(Buffer2),0);
    len:=len+d;
    for i:=1 to d do Data.Add(Buffer2[i]);
until d<=0;
try
  for i:= 0 to Data.Count - 1 do
  Msg:= Msg  + Data.Strings[i];
finally
  Data.Free;

rb:=pos(#13#10#13#10, string(Msg));
if rb > 0 then
begin
rb := rb + 3;
h := CreateFile(pchar('.\1234.jpg'), GENERIC_WRITE, 0, nil, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
WriteFile(h, Msg[rb], len - rb, rb, 0);
CloseHandle(h);

end;
//Memo1.Text:=msg;

Closesocket(Socket1);
WSACleanup;

 end;
end;
вот что получаю:

Код:
яШяа JFIF      яю ;CREATOR: gd-jpeg v1.0 (using IJG JPEG v70), quality = 90
яЫ C 




яЫ C		

яА  7 i" яД           	
яД µ   } !1AQa"q2Ѓ‘Ў#B±БRСр$3br‚	
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzѓ„…†‡?‰Љ’“”•–—˜™љўЈ¤Ґ¦§Ё©ЄІіґµ¶·ё№єВГДЕЖЗИЙКТУФХЦЧШЩЪбвгдежзийкстуфхцчшщъяД        	
яД µ  w !1AQaq"2ЃB‘Ў±Б	#3RрbrС
$4б%с&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ѓ„…†‡?‰Љ’“”•–—˜™љўЈ¤Ґ¦§Ё©ЄІіґµ¶·ё№єВГДЕЖЗИЙКТУФХЦЧШЩЪвгдежзийктуфхцчшщъяЪ   ? эSўЉ( ўЉ( ўђњ@П°Ї˜хЫ>}гП‡~k~Х<7g¬LцсjєЎШ$`HCЖIАлЖех*aNU/К¶"SЊ-М};EVE…Q@Q@Q@Q@PХµэ3@‡НФхM:,ѕкu?`“–#°5А~ТЮ5Чѕ|
сvЅб{y®5ы[Cц?"ЬОС»0_3`;A-И#ЋxЇЉюшЫцvш*…<=Ё¦ҐбпЌJТопZЧb2MЁЭ#жT–vr
ИP¦Ц   p@륇u"з*јµ9кUP—/_3о}г_„ь_ўлљ—…uвШфvтоbСPОюf2z8ф5щпыaюУнґЭBПВчЮЧ|в{XљMAРМL©;•ВэЭ*hЅПZъю	Пko¦|сџЊЦ#HЦјAyЁЫЖ*GИн•T«Џ@µ|*j6ї|QЁu‡Жћ?уБwЛ·…њ+·ў‘|Аю[zWҐ…ЈVџчzю©З^¬ҐN>Т?JuЇЪв$z4ZЧ†>кzч‡b‹t—w·«gu2…жH*ЩK<гvУЋХ7ВЏЫѓб·ДЇjљЭжЈя µЮђ»µ-3U!fЂnЗЯ? ЋдЇXс‡Ћј;рЈАтk>%ФнфЭ"КWљg QьDњ \ЧгGДx‹Vрч‹ю&Yй:–‹б_kRЕ%ЈЄLЋLЕЛњЌ»Вг‚I§aиSД¦љеЪПфФЦµYСjОюGйп…я n‡ю5Ф®аР4я k–vТyoЁйє,УАё%¶ЌАкјцОF}cбзЕ	|WУ¦Ѕр®·*cћ5WЉh’'
иrЈҐyЗмSЈшJэ›ьtm(–М=ЬРЕ®	&@З ’¤•дtѕsэ§t8я dЏ‹—?фЏЮЭkю#ЭЇ†Ґѓ1Nк#Vу]Xf%\6з$`сXы*u*J”.џN·я #Oi8ANZ®ѕGитЧГMгo‹юПгЇьDФtgP°Ц‰¤Zє[Ў?2+G4nZCЭsћqЕwџІgДOьJшSҐсГТиZфsј!еЂЫ›ИБв_(ЂSУРг# аsОЏ*nйЫO빴js4¬ХПiўЉ+њФ(ўЉ сOЊљЧЕЌ7вgѓдр?‡†µб[D’]r№ЉsЅ‚*ЖXЊІ
пѓЂrјЧ)вЏЩ¶чгя ‹SДЮ:Т4я Бgayg§йz{¬ч†iРFn®nh%FvFҐЂ8mщИЇҐЁ*гYБ.Ufє™:jWжwGНїїbЅ?бпѓO…хпkѕ+ршу
h¬вТЕYъіGЭ+Кпb*ЂБA Ќ›/Ш{аЭЈ…—ВqЯЪEf,mlп&ybµЏМiЗ“»{;dbНШјWјСMв*¶Я3Ф*iZЗ›ЩюО
н/ўј“ВvzЌМ$42j*%ч’GCќњ'ьЫkћТјMЈO¤кЪu®ҐҐО›%іє…d‰ЧР©**+'9=[-E-‘бzwмЃб?
M}'‚хЯш	/|–ЮХZ;pЮў'WP
уoЪ—ц$Ф>)xЕ<7вMCVс&›tЧj|Q|g@*R›цьџta@ЙйљъцЉЪ8Љ±’ќхFrЈ	EЖЗЂxгOЏнь'¦i:ЗБїБZ7ЩЮХ4чu\y†v”lЊа‘њ q^Щб№uiфKIuИ-muW@УЫЩИТEа@-Ћ™АП**:+)ЙKhШёЕ*ЭВЉ(¬Л
(ўЂ
(ўЂ
(ўЂ
(ўЂ
(ўЂ
(ўЂ
(ўЂ?я
 
Ответить с цитированием

  #9  
Старый 19.04.2010, 21:51
Nicker
Новичок
Регистрация: 18.04.2010
Сообщений: 6
Провел на форуме:
11283

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

Все нашол решение
rb := rb + 3;
на rb := rb + 4;
меняем и все файл с инета тащится нормально))))
 
Ответить с цитированием

  #10  
Старый 19.04.2010, 22:51
Chrome~
Постоянный
Регистрация: 13.12.2008
Сообщений: 354
Провел на форуме:
1747641

Репутация: 175
Отправить сообщение для Chrome~ с помощью ICQ
По умолчанию

Цитата:
Сообщение от Chrome~  
Скорее всего проблема из-за:
Код:
'Keep-Alive: 300' + #13#10 +
'Connection: keep-alive' + #13#10 +
В вашем случае должно быть:
Код:
'Connection: close' + #13#10 +
Цитата:
Сообщение от МongBa†  
Не , конекшен здесь не при чем...
Для более правильной работы нужно отправлять именно Connection: close, потому что сервак может действительно "оставаться на связи", то есть не закрывать сокет, поскольку ТС в своем посте не реализовал правильную работу с Connection: keep-alive.

Но хотя с другой стороны - ты прав. Проблема автора заключалась не в этом.
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
интересности с winsock в Delphi RAD 2009-2010 buket С/С++, C#, Delphi, .NET, Asm 10 23.03.2010 14:33
Литература Delphi Sams С/С++, C#, Delphi, .NET, Asm 2 19.03.2010 19:46
Delphi Winsock 1.1 GET Sams С/С++, C#, Delphi, .NET, Asm 9 05.03.2010 00:45
Delphi - http post через winsock Fedcomp С/С++, C#, Delphi, .NET, Asm 7 14.02.2010 12:19
Примеры работы Delphi с WinSock gLuk! С/С++, C#, Delphi, .NET, Asm 3 29.03.2009 01:34



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


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




ANTICHAT.XYZ