{function AcceptEx(sListenSocket, sAcceptSocket: TSocket; lpOutputBuffer: PChar; dwReceiveDataLength, dwLocalAddressLength, dwRemoteAddressLength: DWORD; var lpdwBytesReceived: DWORD; lpOverlapped: POVERLAPPED): BOOL; stdcall; } function WSAMakeASyncReply(Buflen, Error: Word): Longint; function WSAMakeSelectReply(Event, Error: Word): Longint; function WSAGetAsyncBuflen(Param: Longint): Word; function WSAGetAsyncError(Param: Longint): Word; function WSAGetSelectEvent(Param: Longint): Word; function WSAGetSelectError(Param: Longint): Word;
implementation
const winsocket = 'ws2_32.dll';
function WSAMakeASyncReply; begin WSAMakeASyncReply:= MakeLong(Buflen, Error); end;
function WSAMakeSelectReply; begin WSAMakeSelectReply:= MakeLong(Event, Error); end;
function WSAGetAsyncBuflen; begin WSAGetAsyncBuflen:= LOWORD(Param); end;
function WSAGetAsyncError; begin WSAGetAsyncError:= HIWORD(Param); end;
function WSAGetSelectEvent; begin WSAGetSelectEvent:= LOWORD(Param); end;
function WSAGetSelectError; begin WSAGetSelectError:= HIWORD(Param); end;
procedure FD_CLR(Socket: TSocket; var FDSet: TFDSet); var I: Integer; begin I := 0; while I < FDSet.fd_count do begin if FDSet.fd_array[I] = Socket then begin while I < FDSet.fd_count - 1 do begin FDSet.fd_array[I] := FDSet.fd_array[I + 1]; Inc(I); end; Dec(FDSet.fd_count); Break; end; Inc(I); end; end;
function FD_ISSET(Socket: TSocket; var FDSet: TFDSet): Boolean; begin Result := WinsOck2. __WSAFDIsSet(Socket, FDSet); end;
procedure FD_SET(Socket: TSocket; var FDSet: TFDSet); begin if FDSet.fd_count < FD_SETSIZE then begin FDSet.fd_array[FDSet.fd_count] := Socket; Inc(FDSet.fd_count); end; end;
procedure FD_ZERO(var FDSet: TFDSet); begin FDSet.fd_count := 0; end;
function accept; external winsocket name 'accept'; function bind; external winsocket name 'bind'; function closesocket; external winsocket name 'closesocket'; function connect; external winsocket name 'connect'; function getpeername; external winsocket name 'getpeername'; function getsockname; external winsocket name 'getsockname'; function getsockopt; external winsocket name 'getsockopt'; function htonl; external winsocket name 'htonl'; function htons; external winsocket name 'htons'; function inet_addr; external winsocket name 'inet_addr'; function inet_ntoa; external winsocket name 'inet_ntoa'; function ioctlsocket; external winsocket name 'ioctlsocket'; function listen; external winsocket name 'listen'; function ntohl; external winsocket name 'ntohl'; function ntohs; external winsocket name 'ntohs'; function recv; external winsocket name 'recv'; function recvfrom; external winsocket name 'recvfrom'; function select; external winsocket name 'select'; function send; external winsocket name 'send'; function sendto; external winsocket name 'sendto'; function setsockopt; external winsocket name 'setsockopt'; function shutdown; external winsocket name 'shutdown'; function socket; external winsocket name 'socket';
function gethostbyaddr; external winsocket name 'gethostbyaddr'; function gethostbyname; external winsocket name 'gethostbyname'; function getprotobyname; external winsocket name 'getprotobyname'; function getprotobynumber; external winsocket name 'getprotobynumber'; function getservbyname; external winsocket name 'getservbyname'; function getservbyport; external winsocket name 'getservbyport'; function gethostname; external winsocket name 'gethostname';
function WSAAsyncSelect; external winsocket name 'WSAAsyncSelect'; function WSARecvEx; external winsocket name 'WSARecvEx'; function WSAAsyncGetHostByAddr; external winsocket name 'WSAAsyncGetHostByAddr'; function WSAAsyncGetHostByName; external winsocket name 'WSAAsyncGetHostByName'; function WSAAsyncGetProtoByNumber; external winsocket name 'WSAAsyncGetProtoByNumber'; function WSAAsyncGetprotoByName; external winsocket name 'WSAAsyncGetprotoByName'; function WSAAsyncGetServByPort; external winsocket name 'WSAAsyncGetServByPort'; function WSAAsyncGetServByName; external winsocket name 'WSAAsyncGetServByName'; function WSACancelAsyncRequest; external winsocket name 'WSACancelAsyncRequest'; function WSASetBlockingHook; external winsocket name 'WSASetBlockingHook'; function WSAUnhookBlockingHook; external winsocket name 'WSAUnhookBlockingHook'; function WSAGetLastError; external winsocket name 'WSAGetLastError'; procedure WSASetLastError; external winsocket name 'WSASetLastError'; function WSACancelBlockingCall; external winsocket name 'WSACancelBlockingCall'; function WSAIsBlocking; external winsocket name 'WSAIsBlocking'; function WSAStartup; external winsocket name 'WSAStartup'; function WSACleanup; external winsocket name 'WSACleanup';
{$IFDEF UNICODE} function WSASetService; external winsocket name 'WSASetServiceW'; function WSAGetServiceClassNameByClassId; external winsocket name 'WSAGetServiceClassNameByClassIdW'; function WSAEnumNameSpaceProviders; external winsocket name 'WSAEnumNameSpaceProvidersW'; function WSAGetServiceClassInfo; external winsocket name 'WSAGetServiceClassInfoW'; function WSAInstallServiceClass; external winsocket name 'WSAInstallServiceClassW'; function WSALookupServiceNext; external winsocket name 'WSALookupServiceNextW'; function WSALookupServiceBegin; external winsocket name 'WSALookupServiceBeginW'; function WSAStringToAddress; external winsocket name 'WSAStringToAddressW'; function WSAAddressToString; external winsocket name 'WSAAddressToStringW'; function WSASocket; external winsocket name 'WSASocketW'; function WSAEnumProtocols; external winsocket name 'WSAEnumProtocolsW'; function WSADuplicateSocket; external winsocket name 'WSADuplicateSocketW'; {$ELSE} function WSASetService; external winsocket name 'WSASetServiceA'; function WSAGetServiceClassNameByClassId; external winsocket name 'WSAGetServiceClassNameByClassIdA'; function WSAEnumNameSpaceProviders; external winsocket name 'WSAEnumNameSpaceProvidersA'; function WSAGetServiceClassInfo; external winsocket name 'WSAGetServiceClassInfoA'; function WSAInstallServiceClass; external winsocket name 'WSAInstallServiceClassA'; function WSALookupServiceNext; external winsocket name 'WSALookupServiceNextA'; function WSALookupServiceBegin; external winsocket name 'WSALookupServiceBeginA'; function WSAStringToAddress; external winsocket name 'WSAStringToAddressA'; function WSAAddressToString; external winsocket name 'WSAAddressToStringA'; function WSASocket; external winsocket name 'WSASocketA'; function WSAEnumProtocols; external winsocket name 'WSAEnumProtocolsA'; function WSADuplicateSocket; external winsocket name 'WSADuplicateSocketA'; {$ENDIF} { UNICODE}
function WSALookupServiceEnd; external winsocket name 'WSALookupServiceEnd'; function WSARemoveServiceClass; external winsocket name 'WSARemoveServiceClass'; function WSAWaitForMultipleEvents; external winsocket name 'WSAWaitForMultipleEvents'; function WSASetEvent; external winsocket name 'WSASetEvent'; function WSASendTo; external winsocket name 'WSASendTo'; function WSASendDisconnect; external winsocket name 'WSASendDisconnect'; function WSASend; external winsocket name 'WSASend'; function WSAResetEvent; external winsocket name 'WSAResetEvent'; function WSARecvFrom; external winsocket name 'WSARecvFrom'; function WSARecvDisconnect; external winsocket name 'WSARecvDisconnect'; function WSARecv; external winsocket name 'WSARecv'; function WSAIoctl; external winsocket name 'WSAIoctl'; function WSAJoinLeaf; external winsocket name 'WSAJoinLeaf'; function WSANtohl; external winsocket name 'WSANtohl'; function WSANtohs; external winsocket name 'WSANtohs'; function WSAHtons; external winsocket name 'WSAHtons'; function WSAHtonl; external winsocket name 'WSAHtonl'; function WSAGetQOSByName; external winsocket name 'WSAGetQOSByName'; function WSAGetOverlappedResult; external winsocket name 'WSAGetOverlappedResult'; function WSAEventSelect; external winsocket name 'WSAEventSelect'; function WSAEnumNetworkEvents; external winsocket name 'WSAEnumNetworkEvents'; function WSACreateEvent; external winsocket name 'WSACreateEvent'; function WSAConnect; external winsocket name 'WSAConnect'; function WSACloseEvent; external winsocket name 'WSACloseEvent'; function WSAAccept; external winsocket name 'WSAAccept';
function TransmitFile; external winsocket name 'TransmitFile'; function __WSAFDIsSet; external winsocket name '__WSAFDIsSet'; { function AcceptEx; external winsocket name 'AcceptEx'; }