Показать сообщение отдельно

  #3671  
Старый 31.05.2009, 16:37
intNet
Познающий
Регистрация: 31.05.2009
Сообщений: 68
С нами: 8919750

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

JeDaSe, приведу пример :
Код:
var
  wData: WSAData;
  S: TSocket;
  addr: sockaddr_in;
  login, pass: string[30];
  n: integer;
  postdata, sendbuff: string;
const
  fact: shortstring= 'HTTP/1.1 302 Found';
begin
  Login := Edit1.Text;
  Pass:= Edit2.Text;
  If (login='') or (pass = '') then
  begin
    MessageDLG('No login & pass!',mtERROR,[mbOK],0);
    exit;
  end;
  If WSAStartUp($0101, wData) <> 0 then
  begin
    MessageDLG('can''t include winsock library',mtError,[mbOK],0);
    exit;
  end;
  s:= Socket(AF_INET, Sock_STREAM, ipPROTO_TCP);
  If S = Invalid_Socket then begin
    ShowMessage('socket error #'+IntToStr(WSAGetLastError));
    CloseSocket(s);
    Exit;
  end;
  FillChar(addr, sizeOF(sockaddr_in),0);
  Addr.sin_family:=af_INET;
  Addr.sin_port:=hTons(80);
  Addr.sin_addr.S_addr:=Inet_ADDR('95.168.160.213');  // ip нужного тебе сайта
  Check(Connect(s, addr, SizeOf(TSockAddr)));
  postdata:= 'username='+Login+'&password='+Pass;  // данные для отправки. Смотри     сниффером
  SendBuff := Snd+ // пакет. опять же смотри сниффером.
  IntToStr(Length(PostData))+#13#10#13#10+postdata;
  send(s, SendBuff[1],Length(sendBuff),0);
  recv(s, buff, ToRecieve, 0);
  Check(ShutDown(s, sd_Both));
  Check(CloseSocket(s));
  Memo1.Text:=Buff;
  Memo1.SetFocus;
  WSACleanUp;
  If pos(fact, memo1.text) > 0 then // good !
  else
     // bad!
...
Это лишь малая часть кода, насколько я знаю для логина вконтакте нужно ещё и get-запрос отправить, думаю сам дальше по аналогии размерёшься.
 
Ответить с цитированием