| Код | 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 У кого есть могуть глянуть по ссылке: ms-help://MS.MSDNQTR.v80.en/MS.MSDN.v80/MS.WIN32COM.v10.en/winsock/winsock/getting_started_with_winsock.htm ( Именно установленный ). Что нетак немогу понять.... Вроде как там написал. |