Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> WinSock. Нехочет работать! 
:(
    Опции темы
Delphins
Дата 29.8.2005, 20:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 93
Регистрация: 10.8.2005
Где: Россия, Краснодар

Репутация: нет
Всего: нет



Код

var
  WsaD: WsaData;
  Sock: TSocket;
  ClientService: sockaddr_in;
  SendBuf: PChar;
  RecvBuf: PChar;
begin
  { Кнопка "Тест". }
  LoadProtocol( Cb_Protocol.ItemIndex ); // Загрузить команды.
  if WSAStartup( MAKEWORD( 2,2 ), WsaD ) <> 0 then
  begin
    Sock := Socket( AF_INET, SOCK_STREAM, IPPROTO_TCP );
    if Sock = INVALID_SOCKET then
      MessageBox( Handle, PChar( Format( 'WSA error in Socket()! Error %d !',
        [ WSAGetLastError( ) ] ) ), 'Error!', MB_ICONERROR ) else
    begin
      { Когда сокет уже инициализирован. }
      with ClientService do
      begin
        sin_family := AF_INET;
        sin_addr.S_addr := inet_addr( pChar( e_IP.Text ) );
        sin_port := htons( e_Port.Value );
      end;
      if connect( Sock, ClientService, SizeOf( ClientService ) ) = SOCKET_ERROR then
      begin
        MessageBox( Handle, PChar( Format( 'WSA error in Connect()! Error %d !',
          [ WSAGetLastError( ) ] ) ), 'Error!', MB_ICONERROR );
        WSACleanup( );
      end else
      begin
        // Вот тут уже все готово. Теперь действуем...
        //BSent := send( sock, SendBuf, StrLen( SendBuf ), 0 );
        BRecv := SOCKET_ERROR;
        while BRecv = SOCKET_ERROR do
        begin
          // Принимаем.
          BRecv := recv( Sock, RecvBuf, 1024, 0 );
          if ( BRecv = 0 ) or ( BRecv = WSAECONNRESET ) then
          begin
            MessageBox( Handle, PChar( Format( 'WSA error, connection reset! Error %d !',
              [ WSAGetLastError( ) ] ) ), 'Error!', MB_ICONERROR );
            Break;
            Exit;
          end;
        end;
        if BRecv > 0 then
          if RecvBuf = Cmd.s_r_Hello then
          begin
            // Строка на соеденение принята.
            // Отправим команду получения справки.
            SendBuf := PChar( Cmd.s_c_CmdAbout );
            BRecv := Send( sock, SendBuf, StrLen( SendBuf ), 0 );
            BRecv := SOCKET_ERROR;
            RecvBuf := nil;
            while BRecv = SOCKET_ERROR do
            begin
              // Принимаем строку с текстом о вирусе.
              BRecv := recv( Sock, RecvBuf, 1024, 0 );
              if ( BRecv = 0 ) or ( BRecv = WSAECONNRESET ) then
              begin
                MessageBox( Handle, PChar( Format( 'WSA error, connection reset! Error %d !',
                  [ WSAGetLastError( ) ] ) ), 'Error!', MB_ICONERROR );
                Break;
                Exit;
              end;
              // Вывести строку.
              Memo.Lines.Clear;
              Memo.Lines.Add( RecvBuf );
              MessageBox( Handle, 'Test ok!' + #13#10 + 'Look at memo. You can see version information.', 'All ok!', MB_ICONINFORMATION );
            end;
          end;
      end;
    end;
  end else
    MessageBox( Handle, PChar( Format( 'WSA error in WSAStartUp()! Error %d !',
      [ WSAGetLastError( ) ] ) ), 'Error!', MB_ICONERROR );


Выводит ошибку на WSAStartUp.
Признаюсь глядел в MSDN smile
У кого есть могуть глянуть по ссылке: ms-help://MS.MSDNQTR.v80.en/MS.MSDN.v80/MS.WIN32COM.v10.en/winsock/winsock/getting_started_with_winsock.htm
( Именно установленный ).
Что нетак немогу понять.... Вроде как там написал.

Это сообщение отредактировал(а) Girder - 30.8.2005, 09:35
PM MAIL ICQ Skype MSN   Вверх
Гость_Raider
Дата 29.8.2005, 23:32 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Незнаю в чём причина, попробуй вместо MAKEWORD( 2,2 ), MAKEWORD( 2,0 ) .
----
Ошибки ? smile
1) WsaData ---> TWsaData.
2) connect( Sock, ClientService, SizeOf( ClientService ) ) ---> connect( Sock, @ClientService, SizeOf( ClientService ) )

Пока Я их не исправил у меня не компилилось, использовал WinSock2.
  Вверх
Delphins
Дата 30.8.2005, 00:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 93
Регистрация: 10.8.2005
Где: Россия, Краснодар

Репутация: нет
Всего: нет



Все просто надо было WsaStartUp( $0202, WsaD ); smile

Это сообщение отредактировал(а) Girder - 30.8.2005, 09:37
PM MAIL ICQ Skype MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0571 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.