HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2

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

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

Delphi Winsock 1.1 GET
  #1  
Старый 21.11.2009, 21:31
Sams
Участник форума
Регистрация: 18.04.2009
Сообщений: 120
Провел на форуме:
435863

Репутация: 80
По умолчанию Delphi Winsock 1.1 GET

Всем добрый вечер. Работаю с winsock на делфи. Пытаюсь отправить GET запрос на хост, получить ответ и записать его в компонент Memo. Но к сожалению когда доходит очередь до функции recv() - программа просто зависает. В чем моя ошибка? Буду рад любым советам/ответам по теме. Заранее благодарен.

Цитата:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, winsock, StdCtrls;

type
TForm1 = class(TForm)
Memo1: TMemo;
Button1: TButton;
Button2: TButton;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
info: WSADATA;
sin: sockaddr_in;
myip: PHostEnt;
sHwnd: integer;
sBuff, rBuff: string;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
WSAStartup(makeword(1,1),info);
sHwnd:=Socket(AF_INET, SOCK_STREAM, 0);
sin.sin_family:=AF_INET;
sin.sin_port:=htons(80);
sin.sin_addr.S_addr:=inet_addr('77.221.159.154');
connect(sHwnd, sin, sizeof(sin));
sbuff:='GET /article.php?article=1016003 HTTP/1.1' + #13#10 +
'User-Agent: ManualSender/1.0' + #13#10 +
'Host: www.wasm.ru' + #13#10 +
#13#10
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Closesocket(sHwnd);
WSACleanup;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
send(sHwnd, sBuff, Length(sBuff), 0);
recv(sHwnd, rBuff, Length(rBuff), 0); // зависает
Memo1.Lines.Add(rBuff);
end;

end.
P.S. Ответ:"Пиши на АСМ" можете оставить при себе...

P.P.S. Может это из-за того, что буфер для отправки имеет тип string с максимальным размером в 255 символов, а GET занимает больше, в следствии чего передается не полный запрос, на который не приходит ответ? И что тогда лучше использовать для буфера, TStringStream? А Pchar покатит?

Последний раз редактировалось Sams; 21.11.2009 в 21:39..
 
Ответить с цитированием
 



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Books PSalm69 Избранное 273 13.02.2016 01:24
Литература Delphi Sams С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby 2 19.03.2010 19:46
ASM Winsock 1.1 Sams С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby 2 14.11.2009 16:42
Virus.Win32.Induc.a или "Снова записки новичка" _=(mac)=_ Защита ОС: вирусы, антивирусы, файрволы. 5 24.08.2009 23:34
Примеры работы Delphi с WinSock gLuk! С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby 3 29.03.2009 01:34



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


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




ANTICHAT ™ © 2001- Antichat Kft.