[Delphi] WinSock & POP3

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Pyhin, 13 Sep 2010.

  1. Pyhin

    Pyhin Member

    Joined:
    25 Oct 2008
    Messages:
    1
    Likes Received:
    32
    Reputations:
    0
    Не могу разобраться где ошибка...

    Code:
    unit Unit1;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, winsock;
    
    type
      TForm1 = class(TForm)
        Edit1: TEdit;
        Edit2: TEdit;
        Edit3: TEdit;
        Button1: TButton;
        Label1: TLabel;
        Label2: TLabel;
        Label3: TLabel;
        Memo1: TMemo;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.dfm}
    
    
    
    procedure TForm1.Button1Click(Sender: TObject);
    var
    WSD : WSAdata;
    S: TSocket;
    SA: TSockAddr;
    cmd: String;
    //ans: array[0..255] of Char;
    res: Array[0..255] of AnsiChar;
    begin
       if WSAStartup($101,WSD)<>0 then
       begin
          Memo1.Lines.Add('Connect error...');
          exit;
       end;
    
       SA.sin_family := AF_INET;
       SA.sin_addr.S_addr := inet_addr('94.100.177.6');
       S := socket(AF_INET, SOCK_STREAM, 0);
    
       if S = INVALID_SOCKET then Memo1.Lines.Add('Socket error...');
    
       SA.sin_port := htons(110);
    
       if connect(S, SA, sizeof(SA)) = SOCKET_ERROR then
       begin
         Memo1.Lines.Add('Connect socket error...');
         exit;
       end;
    
       Memo1.Lines.Add('Good Connect!');
       sleep(2000);
    
       cmd:='USER michael_ur';
       send(S, Pointer(cmd)^, Length(cmd)*SizeOf(Char), 0);
       recv(S, res, sizeof(res), 0); //уже не получается
       Memo1.Lines.Add(res);
       //Memo1.Lines.Add(ReadFromSocket(S));
       sleep(1000);
       WSACleanup;
    
    end;
    
    end.
    В ответ сервера приходит -ERR Invalid command... Помогите
     
  2. Chrome~

    Chrome~ Elder - Старейшина

    Joined:
    13 Dec 2008
    Messages:
    937
    Likes Received:
    162
    Reputations:
    27
    Странно, но у меня приходит в ответ +OK. Код тот, что и выше.
     
  3. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    ну вообщето в конце команды должны быть #13#10
     
  4. Pyhin

    Pyhin Member

    Joined:
    25 Oct 2008
    Messages:
    1
    Likes Received:
    32
    Reputations:
    0
    slesh, пробовал и так ничего не меняется....

    Chrome, вот полный ответ который приходит:

    Code:
    Good Connect!
    +OK 
    -ERR Invalid command
    -ERR Invalid command
    -ERR Invalid command
    -ERR Invalid command
    -ERR Invalid command
    -ERR Invalid command
    -ERR Invalid command
    -ERR Invalid command
    -ERR Invalid command
    -ERR Invalid command
    -ERR Invalid command
    -ERR Inv
    
    2 дня иппусь...

    send(S, Pointer(cmd)^, Length(cmd)*SizeOf(Char), 0); - параметры этой функции правильно задал?
    -----------------------

    Проблема решена:

    до этого писал проэкт в RAD Studio 2010, сегодня скомпилил в Delphi7 код тот же но в Дельфи 7 он работает, всем спасибо за помощь.
     
    #4 Pyhin, 14 Sep 2010
    Last edited: 14 Sep 2010
  5. Chrome~

    Chrome~ Elder - Старейшина

    Joined:
    13 Dec 2008
    Messages:
    937
    Likes Received:
    162
    Reputations:
    27
    Интересно, но почему так? Благодаря каким различиям между Delphi 2010 и Delphi 7 так получилось?
     
  6. Pyhin

    Pyhin Member

    Joined:
    25 Oct 2008
    Messages:
    1
    Likes Received:
    32
    Reputations:
    0
    Не первый раз замечаю что в дельфи7 код работает нормально, а в RAD 2010 тот же код работает так как ему захочется, товарищ предположил, что может это из-за кряка... Хз вообщем
     
  7. sn0w

    sn0w Статус пользователя:

    Joined:
    26 Jul 2005
    Messages:
    1,021
    Likes Received:
    1,200
    Reputations:
    327
    может рад студия собирала в юникоде? в любом случае сниффер бы ответил на вопрос
     
  8. Gusev

    Gusev Banned

    Joined:
    4 Sep 2010
    Messages:
    86
    Likes Received:
    8
    Reputations:
    -5
    Необязательно

    не обязательно
     
  9. sn0w

    sn0w Статус пользователя:

    Joined:
    26 Jul 2005
    Messages:
    1,021
    Likes Received:
    1,200
    Reputations:
    327
    read this fuckin RFC!!