Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.07.2008, 14:13   #1
AidarBik
Форумчанин
 
Регистрация: 12.06.2007
Сообщений: 130
По умолчанию WinSock (send, recv)

Код:
procedure TForm1.Button1Click(Sender: TObject);
function HostToIP(Name: string; var Ip: string): Boolean;
var 
  wsdata : TWSAData;
  hostName : array [0..255] of char;
  hostEnt : PHostEnt;
  addr : PChar;
begin 
  WSAStartup ($0101, wsdata);
  try
    gethostname (hostName, sizeof (hostName));
    StrPCopy(hostName, Name);
    hostEnt := gethostbyname (hostName);
    if Assigned (hostEnt) then
    if Assigned (hostEnt^.h_addr_list) then
    begin
      addr := hostEnt^.h_addr_list^;
      if Assigned (addr) then
      begin
        IP := Format ('%d.%d.%d.%d', [byte (addr [0]),
        byte (addr [1]), byte (addr [2]), byte (addr [3])]);
        Result := True;
      end
      else
      Result := False;
    end
    else
    Result := False
    else
    begin
      Result := False;
    end;
  finally
    WSACleanup;
  end;
end;
const
  Port = 110;
  Serv = 'pop3.mail.ru';
var 
  D: WSAData;
  S: TSocket;
  A: TSockAddr;
  iphost: String;
  cmd: String;
  //reslen: Integer;
  res: Array[0..255] of Char;//Array [0..1024] of Char;
begin
  if WSAStartup($101,D)<>0 then
  begin
    Memo1.Lines.Add('Ошибка');
    Exit;
  end;
  HostToIP(Serv, iphost);
  Memo1.Lines.Add(iphost);
  A.sin_family:=AF_INET;
  A.sin_addr.S_addr:=inet_addr(PChar(iphost));
  S:=socket(AF_INET,SOCK_STREAM,0);
  if S=INVALID_SOCKET then
  Memo1.Lines.Add('Ошибка сокета');
  A.sin_port:=htons(Port);
  if connect(S,A,sizeof(A))=0 then
  begin
    Memo1.Lines.Add('Соединено');
    cmd:='USER aidarufa92';
    send(S, cmd, Length(cmd), 0); 
    //ioctlsocket(S, FIONREAD, LongInt(reslen));
    //SetLength(res, reslen);
    recv(S, res, sizeof(res), 0); //все ок
    Memo1.Lines.Add(res);
    cmd:='PASS пароль';
    send(S, cmd, Length(cmd), 0);
    recv(S, res, sizeof(res), 0); //уже не получается
    Memo1.Lines.Add(res);

  end
  else
  Memo1.Lines.Add('Не соединено');
  WSACleanup;
end;
В Memo выводится
Код:
Memo1
194.67.23.102
Соединено
+OK 

-ERR Unknown command: ""//в кавычках значок со стрелочкой вверх, почему то пропал
w
Что не так?

Последний раз редактировалось AidarBik; 27.07.2008 в 14:16.
AidarBik вне форума Ответить с цитированием
Старый 27.07.2008, 15:22   #2
AidarBik
Форумчанин
 
Регистрация: 12.06.2007
Сообщений: 130
По умолчанию

Все, проблема решена. http://delphiworld.narod.ru/base/crtsock.html
AidarBik вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Winsock не соединяет Da$aD Работа с сетью в Delphi 0 11.07.2008 22:57
Proxy в WinSock SHEI'TI Работа с сетью в Delphi 3 29.03.2008 18:27
работа с WinSock Agasfer Работа с сетью в Delphi 1 13.02.2008 18:54
Send Message _SERGEYX_ Работа с сетью в Delphi 5 30.10.2007 06:38
типа send или small chat Elm0 Общие вопросы Delphi 1 27.07.2007 18:46