/
George_Smith
/
RuSTy
Обзор
Документация
Войти
/
George_Smith
/
RuSTy
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
Peter
st_include/SysSocket.st
497 строк
15 KB
Peter Korobeynikov
FB-CALL TESTING
25 янв 2026, 17:25
25 янв 2026, 17:25
feb4daa
Код
Авторство
О чём код?
/*SysSocket Library, to get access to the socket interface for TCP/IP communication on the target. Version 3.5.19.0 */ {external} FUNCTION SysSockAccept : RTS_IEC_HANDLE VAR_INPUT hSocket : RTS_IEC_HANDLE; // Handle to the socket END_VAR VAR_IN_OUT pSockAddr : SOCKADDRESS; // Socket address of the client END_VAR VAR_IN_OUT pdiSockAddrSize : DINT; // Pointer to size of socket address structure END_VAR VAR_IN_OUT pResult : RTS_IEC_RESULT; // Pointer to result code END_VAR END_FUNCTION {external} FUNCTION SysSockBind : RTS_IEC_RESULT VAR_INPUT hSocket : RTS_IEC_HANDLE; // Handle to the socket END_VAR VAR_IN_OUT pSockAddr : SOCKADDRESS; // Socket address (указатель) END_VAR VAR_INPUT diSockAddrSize : DINT; // Size of socket address structure END_VAR END_FUNCTION {external} FUNCTION SysSockClose : RTS_IEC_RESULT VAR_INPUT hSocket : RTS_IEC_HANDLE; END_VAR END_FUNCTION {external} FUNCTION SysSockCloseUdp : RTS_IEC_RESULT VAR_INPUT hSocketUdp : RTS_IEC_HANDLE; END_VAR END_FUNCTION {external} FUNCTION SysSockConnect : RTS_IEC_RESULT VAR_INPUT hSocket : RTS_IEC_HANDLE; // Handle to the socket END_VAR VAR_IN_OUT pSockAddr : SOCKADDRESS; // Socket address of the server to connect to END_VAR VAR_INPUT diSockAddrSize : DINT; // Size of socket address structure END_VAR END_FUNCTION {external} FUNCTION SysSockCreate : RTS_IEC_HANDLE VAR_INPUT iAddressFamily : INT; // Address family (SOCKET_AF_INET, etc.) diType : DINT; // Socket type (SOCKET_STREAM, SOCKET_DGRAM, etc.) diProtocol : DINT; // Protocol (SOCKET_IPPROTO_TCP, SOCKET_IPPROTO_UDP, etc.) END_VAR VAR_IN_OUT pResult : RTS_IEC_RESULT; // Result code END_VAR END_FUNCTION {external} FUNCTION SysSockCreateUdp : RTS_IEC_HANDLE VAR_INPUT diSendPort : DINT; (* Port number to send (host byte order) *) diRecvPort : DINT; (*Port number to receive (host byte order*) END_VAR VAR_IN_OUT pResult: RTS_IEC_RESULT; (* Pointer to runtime system error code *) END_VAR END_FUNCTION {external} FUNCTION SysSockFdInit : RTS_IEC_RESULT VAR_INPUT hSocket : RTS_IEC_HANDLE; // Socket to add END_VAR VAR_IN_OUT pfs: SOCKET_FD_SET; (* Socket Set *) END_VAR END_FUNCTION {external} FUNCTION SysSockFdIsset : BOOL VAR_INPUT hSocket : RTS_IEC_HANDLE; // Socket to add END_VAR VAR_IN_OUT pfs: SOCKET_FD_SET; (* Socket Set *) END_VAR END_FUNCTION {external} FUNCTION SysSockFdZero : RTS_IEC_RESULT VAR_IN_OUT pfs: SOCKET_FD_SET; (* Socket Set *) END_VAR END_FUNCTION {external} FUNCTION SysSockGetFirstAdapterInfo : RTS_IEC_HANDLE VAR_IN_OUT pAdapterInfo : SOCK_ADAPTER_INFORMATION; // POINTER TO SOCK_ADAPTER_INFORMATION puxiAdapterInfoSize : __UXINT; // POINTER TO __UXINT pResult : RTS_IEC_RESULT; // POINTER TO RTS_IEC_RESULT END_VAR END_FUNCTION {external} FUNCTION SysSockGetHostByName : RTS_IEC_RESULT VAR_IN_OUT szHostName : STRING; // REFERENCE TO STRING - передается как STRING pHost : SOCK_HOSTENT; // POINTER TO SOCK_HOSTENT - передается как VAR_IN_OUT структура END_VAR END_FUNCTION {external} FUNCTION SysSockGetHostName : RTS_IEC_RESULT VAR_IN_OUT szHostName : STRING; // REFERENCE TO STRING - буфер для имени хоста END_VAR VAR_INPUT diNameLen : DINT; // Максимальная длина имени хоста END_VAR END_FUNCTION {external} FUNCTION SysSockGetNextAdapterInfo : RTS_IEC_HANDLE VAR_INPUT hPrevAdapter : RTS_IEC_HANDLE; // Handle returned by SysSockGetFirstAdapter() or by previous call of SysSockGetNextAdapter() END_VAR VAR_IN_OUT pAdapterInfo : SOCK_ADAPTER_INFORMATION; // Network adapter information structure puxiAdapterInfoSize : __UXINT; // Size in bytes of SOCK_ADAPTER_INFORMATION; returns structure size from external implementation pResult : RTS_IEC_RESULT; // Pointer to runtime system error code END_VAR END_FUNCTION {external} FUNCTION SysSockGetOSHandle : RTS_IEC_HANDLE VAR_INPUT hSocketUdp : RTS_IEC_HANDLE; // Handle to the UDP socket END_VAR END_FUNCTION {external} FUNCTION SysSockGetOption : RTS_IEC_RESULT VAR_INPUT hSocket: RTS_IEC_HANDLE; (* Handle to the socket *) diLevel: DINT; (* Level of the socket *) diOption : DINT; (* Socket option command *) END_VAR VAR_IN_OUT pdiOptionValue: DINT; (* Pointer to the option value *) pdiOptionLen : DINT; (* Lenght of option value *) END_VAR END_FUNCTION {external} FUNCTION SysSockGetPeerName : RTS_IEC_RESULT VAR_INPUT hSocket : RTS_IEC_HANDLE; // Handle to the socket END_VAR VAR_IN_OUT pSockAddr : SOCKADDRESS; // Socket address of the peer pdiSockAddrSize : DINT; // Size of socket address structure END_VAR END_FUNCTION {external} FUNCTION SysSockGetRecvSizeUdp : __XINT VAR_INPUT hSocketUdp : RTS_IEC_HANDLE; // Handle to the UDP socket diTimeout : DINT; // Timeout to wait for received data. -1 = Infinite wait 0 = no wait END_VAR VAR_IN_OUT pResult : RTS_IEC_RESULT; // Size of socket address structure END_VAR END_FUNCTION {external} FUNCTION SysSockGetSockName : RTS_IEC_RESULT VAR_INPUT hSocket : RTS_IEC_HANDLE; // Handle to the socket END_VAR VAR_IN_OUT pSockAddr : SOCKADDRESS; // Socket address of the local socket pdiSockAddrSize : DINT; // Size of socket address structure END_VAR END_FUNCTION {external} FUNCTION SysSockGetSubnetMask : RTS_IEC_RESULT VAR_IN_OUT szIPAddress : STRING; // IP address diMaxSubnetMask : DINT; // Maximum length of the subnet mask string szSubnetMask : STRING; // Subnet mask (выходной параметр) END_VAR END_FUNCTION {external} FUNCTION SysSockHtonl : UDINT VAR_INPUT ulHost : UDINT; // Host value (в порядке байт хоста) END_VAR END_FUNCTION {external} FUNCTION SysSockHtons : WORD VAR_INPUT usHost : WORD; // Host value (в порядке байт хоста) END_VAR END_FUNCTION {external} FUNCTION SysSockInetAddr : RTS_IEC_RESULT VAR_IN_OUT szIPAddress : STRING; // REFERENCE TO STRING - передается как STRING pInAddr : UDINT; // POINTER TO UDINT - передается как VAR_IN_OUT UDINT END_VAR END_FUNCTION {external} FUNCTION SysSockInetNtoa : RTS_IEC_RESULT VAR_IN_OUT pInAddr : INADDR; // Pointer to IP address description szIPADDR : STRING; // Pointer to get IP address string (must be at least 16 bytes long) END_VAR VAR_INPUT diIPAddrSize : UDINT; // Maximum length of szIPAddr END_VAR END_FUNCTION {external} FUNCTION SysSockIoctl : RTS_IEC_RESULT VAR_INPUT hSocket: RTS_IEC_HANDLE; (* Handle to the socket *) END_VAR VAR_INPUT diCommand: DINT; (* Io-control command *) END_VAR VAR_IN_OUT pdiParameter: DINT; (* Parameter value of the command *) END_VAR END_FUNCTION {external} FUNCTION SysSockListen : RTS_IEC_RESULT VAR_INPUT hSocket : RTS_IEC_HANDLE; // Handle to the socket diMaxConnections : DINT; // Maximum number of connections allowed END_VAR END_FUNCTION {external} FUNCTION SysSockNtohl : UDINT VAR_INPUT ulNet : UDINT; // Ethernet value END_VAR END_FUNCTION {external} FUNCTION SysSockNtohs : WORD VAR_INPUT usNet : WORD; // Ethernet value END_VAR END_FUNCTION {external} FUNCTION SysSockPing : RTS_IEC_RESULT VAR_IN_OUT szIPAddress : STRING; // REFERENCE TO STRING - IP address as string END_VAR VAR_INPUT ulTimeout : UDINT; // Timeout in milliseconds END_VAR VAR_IN_OUT pulReplyTime : UDINT; // POINTER TO UDINT - average reply time in milliseconds END_VAR END_FUNCTION {external} FUNCTION SysSockRecv : __XINT VAR_INPUT hSocket : RTS_IEC_HANDLE; // Handle to the socket END_VAR VAR_IN_OUT pbyBuffer : STRING; // Buffer to read data from the socket END_VAR VAR_INPUT diBufferSize : __XINT; // Maximum length of the buffer diFlags : DINT; END_VAR VAR_IN_OUT pResult : RTS_IEC_RESULT; // Pointer to runtime system error code END_VAR END_FUNCTION {external} FUNCTION SysSockRecvFrom : __XINT VAR_INPUT hSocket: RTS_IEC_HANDLE; (* Handle to the socket *) END_VAR VAR_IN_OUT pbyBuffer: STRING; (* Buffer to read data from the socket *) END_VAR VAR_INPUT diBufferSize: __XINT; (* Maximum length of the buffer *) diFlags: DINT; (* The flags parameter can be used to influence the behavior of the function beyond the options specified for the associated socket. *) END_VAR VAR_IN_OUT pSockAddr: SOCKADDRESS; (* Socket address and port to receive data from *) END_VAR VAR_INPUT diSockAddrSize: DINT; (* Size of socket address structure *) END_VAR VAR_IN_OUT pResult : RTS_IEC_RESULT; // Pointer to runtime system error code END_VAR END_FUNCTION {external} FUNCTION SysSockRecvFromUdp : __XINT VAR_INPUT hSocketUdp: RTS_IEC_HANDLE; (* Handle to the UDP socket *) END_VAR VAR_IN_OUT pbyData: STRING; (* Pointer to data to receive *) END_VAR VAR_INPUT diDataSize: __XINT; (* Size of data to receive *) END_VAR VAR_IN_OUT pReply: UDP_REPLY; (* Description of the client that has sent this paket *) pResult : RTS_IEC_RESULT; // Pointer to runtime system error code END_VAR END_FUNCTION {external} FUNCTION SysSockRecvFromUdp2 : __XINT VAR_INPUT hSocketUdp: RTS_IEC_HANDLE; (* Handle to the UDP socket *) END_VAR VAR_IN_OUT pbyData: STRING; (* Pointer to data to receive *) END_VAR VAR_INPUT diDataSize: __XINT; (* Size of data to receive *) END_VAR VAR_IN_OUT pReply: UDP_REPLY2; (* Description of the client that has sent this paket *) pResult : RTS_IEC_RESULT; // Pointer to runtime system error code END_VAR END_FUNCTION {external} FUNCTION SysSockRecvMsg : __XINT VAR_INPUT hSocket : RTS_IEC_HANDLE; // Handle to the socket. END_VAR VAR_IN_OUT pMessage : SOCK_RECVMSG_MSG; // Points to a SOCK_RECVMSG_MSG structure, containing both the buffer to store the source address and the buffer for the incoming message. END_VAR VAR_INPUT flags : DWORD; // Specifies the type of message reception. END_VAR VAR_IN_OUT pResult : RTS_IEC_RESULT; // Pointer to runtime system error code END_VAR END_FUNCTION {external} FUNCTION SysSockSelect : RTS_IEC_RESULT VAR_INPUT diWidth : DINT; // Number of sockets END_VAR VAR_IN_OUT pfdRead : SOCKET_FD_SET; // Optional pointer to the structure pfdWrite: SOCKET_FD_SET; // pfdExcept : SOCKET_FD_SET; ptvTimeout : SOCKET_TIMEVAL; // Pointer to maximum timespan which the function SysSockSelect waits for a response pdiReady : DINT; // Number of sockets that are ready for IO END_VAR END_FUNCTION {external} FUNCTION SysSockSend : __XINT VAR_INPUT hSocket : RTS_IEC_HANDLE; // Handle to the socket END_VAR VAR_IN_OUT pbyBuffer : STRING; // Buffer with data to sent END_VAR VAR_INPUT diBufferSize : __XINT; // Maximum length of the buffer diFlags : DINT; END_VAR VAR_IN_OUT pResult : RTS_IEC_RESULT; // Pointer to runtime system error code END_VAR END_FUNCTION {external} FUNCTION SysSockSendTo : __XINT VAR_INPUT hSocket : RTS_IEC_HANDLE; // Handle to the socket END_VAR VAR_IN_OUT pbyBuffer : STRING; // Buffer with data to sent END_VAR VAR_INPUT diBufferSize : __XINT; // Length of data to send. diFlags : DINT; // The flags parameter can be used to influence the behavior of the function beyond the options specified for the associated socket. END_VAR VAR_IN_OUT pSockAddr: SOCKADDRESS; (* Socket address and port to sent data to *) END_VAR VAR_INPUT diSockAddrSize: DINT; (* Size of socket address structure *) END_VAR VAR_IN_OUT pResult : RTS_IEC_RESULT; // Pointer to runtime system error code END_VAR END_FUNCTION {external} FUNCTION SysSockSendToUdp : __XINT VAR_INPUT hSocket : RTS_IEC_HANDLE; // Handle to the UDP socket diPort : DINT; (* Port number ot send data to *) END_VAR VAR_IN_OUT szDestAddress: STRING; (* Destination IP address ot send data to *) pbyData : STRING; (* Pointer to data to send *) END_VAR VAR_INPUT diDataSize: __XINT; (* Size of data to send. If diDataSize = 0 ERR_PARAMETER is returned. *) END_VAR VAR_IN_OUT pResult : RTS_IEC_RESULT; // Pointer to runtime system error code END_VAR END_FUNCTION {external} FUNCTION SysSockSetDefaultGateway : RTS_IEC_RESULT VAR_INPUT wsAdapterName : WSTRING; // Adapter name provided by SysSockGetFirstAdapter() / SysSockGetNextAdapter() END_VAR VAR_IN_OUT GatewayAddr : INADDR; // Ip address of the gateway to set in network byte order. END_VAR END_FUNCTION {external} FUNCTION SysSockSetIpAddressAndNetMask : RTS_IEC_RESULT VAR_INPUT wsAdapterName : WSTRING; // Adapter name provided by SysSockGetFirstAdapter() / SysSockGetNextAdapter() END_VAR VAR_IN_OUT IpAddr : INADDR; // Ip address to set in network byte order NetMask : INADDR; // Subnet mask to set in network byte order END_VAR END_FUNCTION {external} FUNCTION SysSockSetOption : RTS_IEC_RESULT VAR_INPUT hSocket : RTS_IEC_HANDLE; // Handle to the socket diLevel : DINT; // Level of the socket diOption : DINT; // Socket option command END_VAR VAR_IN_OUT pdiOptionValue : DINT; // POINTER TO DINT END_VAR VAR_INPUT diOptionLen : DINT; // Length of option value END_VAR END_FUNCTION {external} FUNCTION SysSockShutdown : RTS_IEC_RESULT VAR_INPUT hSocket : RTS_IEC_HANDLE; // Handle to the socket diHow : DINT; // Specifies, which operations are no longer be allowed. See shutdown flags. END_VAR END_FUNCTION