ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #11  
Старый 13.05.2010, 11:15
Аватар для denjf
denjf
Участник форума
Регистрация: 12.11.2008
Сообщений: 146
Провел на форуме:
592199

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

Цитата:
Сообщение от slesh  
снифер в руки и вперед за родину.

CopyMemory(@sBuff,pchar(sBuff1),length(sBuff1));
send(sHwnd, sBuff, Length(sBuff), 0);
recv(sHwnd, rBuff, Length(rBuff), 0);

это код полный пздц.
Отправляй данный сразу из строки, без промежуточного буфера.
А вот когда считываешь, то указывай не Length(rBuff) а размер буфера в байтах. или юзай sizeof
send(sHwnd, sBuff1[1], Length(sBuff), 0);


recv(sHwnd, rBuff, sizeof(rBuff), 0);
Memo1.Lines.Add(rBuff);

PS Только начал изучать винсок.

Вот что вернулось в ответ 訄

В Delphi 7 все работает!!! А в 2010 нихера (((

Последний раз редактировалось denjf; 13.05.2010 в 11:40..
 
Ответить с цитированием

  #12  
Старый 13.05.2010, 11:36
Аватар для greki_hoy
greki_hoy
Познающий
Регистрация: 04.03.2010
Сообщений: 32
Провел на форуме:
32525

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

Цитата:
Сообщение от denjf  
send(sHwnd, sBuff1[1], Length(sBuff), 0);


recv(sHwnd, rBuff, sizeof(rBuff), 0);
Memo1.Lines.Add(rBuff);

PS Только начал изучать винсок.

Вот что вернулось в ответ 訄
странно а должно было быть нарушение доступа
получится примерно так
movsx eax, byte ptr[buffer + 1]
push eax
//... передается не адрес а символ к тому же расширенный в итоге там нечто такого 0x000000df
а запись по такому адресу отловится скорее всего как запись в память отведенную для перехвата нулевых уакзателей а если символ был 0xff получится такой адрес 0xffffffff
напишите так
send(sHwnd, sBuff1, strlen(sBuff), 0);
sBuff1[1] это разыменование а нужен адрес и индексация с нуля не забываем
 
Ответить с цитированием

  #13  
Старый 13.05.2010, 11:54
Аватар для denjf
denjf
Участник форума
Регистрация: 12.11.2008
Сообщений: 146
Провел на форуме:
592199

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

Цитата:
Сообщение от greki_hoy  
странно а должно было быть нарушение доступа
получится примерно так
movsx eax, byte ptr[buffer + 1]
push eax
//... передается не адрес а символ к тому же расширенный в итоге там нечто такого 0x000000df
а запись по такому адресу отловится скорее всего как запись в память отведенную для перехвата нулевых уакзателей а если символ был 0xff получится такой адрес 0xffffffff
напишите так
send(sHwnd, sBuff1, strlen(sBuff), 0);
sBuff1[1] это разыменование а нужен адрес и индексация с нуля не забываем

Проблема не в коде, я поставил Delphi7 все отлично работает, тоже самое в 2010 не хочет не в какую.
 
Ответить с цитированием

  #14  
Старый 13.05.2010, 17:15
Аватар для denjf
denjf
Участник форума
Регистрация: 12.11.2008
Сообщений: 146
Провел на форуме:
592199

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

Цитата:
repeat
FillChar(buf,SizeOf(buf),0);
d:=recv(Socket1,buf,SizeOf(buf),0);

for i:=1 to d do html:=html+utf8toansi(buf[i]);
memo1.Lines.Add(html);
until d<=0;
Пытаюсь получить весь HTML код страницы, получаю но из цикла почему то не выходит.

PS/ Задолбал заторможеный idhttp =)
 
Ответить с цитированием

  #15  
Старый 13.05.2010, 17:23
Аватар для Chrome~
Chrome~
Постоянный
Регистрация: 13.12.2008
Сообщений: 354
Провел на форуме:
1747641

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

Цитата:
Сообщение от denjf  
Пытаюсь получить весь HTML код страницы, получаю но из цикла почему то не выходит.

PS/ Задолбал заторможеный idhttp =)
Во первых: idHTTP, это компонент из библиотеки Indy.
Во вторых: ты тут Winsock используешь, а не Indy.
В третьих:
Код:
for i:=1 to d do html:=html+utf8toansi(buf[i]);
memo1.Lines.Add(html);
Это вообще неправильный вывод данных в Memo.

Так что еще раз пересмотри свою мысль и пойми, кто "заторможеный".
 
Ответить с цитированием

  #16  
Старый 13.05.2010, 17:46
Аватар для denjf
denjf
Участник форума
Регистрация: 12.11.2008
Сообщений: 146
Провел на форуме:
592199

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

Цитата:
Сообщение от Chrome~  
Во первых: idHTTP, это компонент из библиотеки Indy.
Во вторых: ты тут Winsock используешь, а не Indy.
В третьих:
Код:
for i:=1 to d do html:=html+utf8toansi(buf[i]);
memo1.Lines.Add(html);
Это вообще неправильный вывод данных в Memo.

Так что еще раз пересмотри свою мысль и пойми, кто "заторможеный".

Я не много не правельно выразил мысль про idhttp, это было сказанно к тому что он заторможенный по сравнению с winsock, поэтому я решил научится работать с winsock.

Код:
for i:=1 to d do html:=html+utf8toansi(buf[i]);
memo1.Lines.Add(html);
Почему не правельно? В мемо я получаю то что надо. Но немогу понять почему цикл так и продолжает работать.
 
Ответить с цитированием

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

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

Цитата:
Сообщение от denjf  
Я не много не правельно выразил мысль про idhttp, это было сказанно к тому что он заторможенный по сравнению с winsock, поэтому я решил научится работать с winsock.

Код:
for i:=1 to d do html:=html+utf8toansi(buf[i]);
memo1.Lines.Add(html);
Почему не правельно? В мемо я получаю то что надо. Но немогу понять почему цикл так и продолжает работать.
idHTTP нормально работает, если им правильно пользоваться.
Все очень просто.
Этот код
Код:
repeat
FillChar(buf,SizeOf(buf),0);
d:=recv(Socket1,buf,SizeOf(buf),0);

for i:=1 to d do html:=html+utf8toansi(buf[i]);
memo1.Lines.Add(html);
until d<=0;
есть неправильным в том смысле, что ты постоянно добавляешь данные к переменной html, и выводишь ее в Memo. Получается, что некоторая часть страница в Memo будет отображаться несколько раз. В общем, надо перед цыклом for написать
Код:
html := '';
Цикл продолжает выполняться потому, что нужно в отправляемых заголовках написать не
Код:
Connection:Keep-Alive
А
Код:
Connection: close

Последний раз редактировалось Chrome~; 13.05.2010 в 18:11..
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
УЧИМСЯ ИСПОЛЬЗОВАТЬ WINSOCK. ЧАСТЬ I. slesh Авторские статьи 30 06.03.2010 20:52
Delphi Winsock 1.1 GET Sams С/С++, C#, Delphi, .NET, Asm 9 05.03.2010 00:45
Траблы с Internet Connection :\ .::f-duck::. Болталка 2 16.08.2009 18:25
Клиент-сервер на WinSock --StraNger-- Авторские статьи 1 21.04.2009 11:43
Чуть не понятно о winsock на делфи diznt С/С++, C#, Delphi, .NET, Asm 8 03.04.2009 21:12



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


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




ANTICHAT.XYZ