CoDeSys+Œ ¥‚RA ð ð ð ðVAR_GLOBAL END_VAR ',#7ˆ°Globale_Variablen¥‚RA ¥‚RAsVAR_GLOBAL CONSTANT SOCKET_INVALID:DINT:=-1; (* AddressFamily *) SOCKET_AF_UNSPEC:INT:= 0; (* unspecified *) SOCKET_AF_LOCAL:INT:= 1; (* local to host (pipes, portals) *) SOCKET_AF_UNIX:INT:=SOCKET_AF_LOCAL; (* backward compatibility *) SOCKET_AF_INET:INT:=2; (* internetwork: UDP, TCP, etc. *) SOCKET_AF_IMPLINK:INT:=3; (* arpanet imp addresses *) SOCKET_AF_PUP:INT:=4; (* pup protocols: e.g. BSP *) SOCKET_AF_CHAOS:INT:=5; (* mit CHAOS protocols *) SOCKET_AF_NS:INT:=6; (* XEROX NS protocols *) SOCKET_AF_ISO:INT:=7; (* ISO protocols *) SOCKET_AF_OSI:INT:=SOCKET_AF_ISO; SOCKET_AF_ECMA:INT:=8; (* european computer manufacturers *) SOCKET_AF_DATAKIT:INT:=9; (* datakit protocols *) SOCKET_AF_CCITT:INT:=10; (* CCITT protocols, X.25 etc *) SOCKET_AF_SNA:INT:=11; (* IBM SNA *) SOCKET_AF_DECnet:INT:=12; (* DECnet *) SOCKET_AF_DLI:INT:=13; (* DEC Direct data link interface *) SOCKET_AF_LAT:INT:= 14; (* LAT *) SOCKET_AF_HYLINK:INT:=15; (* NSC Hyperchannel *) SOCKET_AF_APPLETALK:INT:=16; (* Apple Talk *) SOCKET_AF_ROUTE:INT:=17; (* Internal Routing Protocol *) SOCKET_AF_LINK:INT:=18; (* Link layer interface *) SOCKET_pseudo_AF_XTP:INT:=19; (* eXpress Transfer Protocol (no AF) *) SOCKET_AF_COIP:INT:=20; (* connection-oriented IP, aka ST II *) SOCKET_AF_CNT:INT:=21; (* Computer Network Technology *) SOCKET_pseudo_AF_RTIP:INT:=22; (* Help Identify RTIP packets *) SOCKET_AF_IPX:INT:=23; (* Novell Internet Protocol *) SOCKET_AF_SIP:INT:=24; (* Simple Internet Protocol *) SOCKET_pseudo_AF_PIP:INT:=25; (* Help Identify PIP packets *) SOCKET_AF_MAX:INT:=26; SOCKET_AF_INET_BSD:INT:=100; (* BSD-specific INET af *) SOCKET_AF_INET_STREAMS:INT:=101; (* STREAMS-specific INET af *) (* Level number for (get/set)sockopt() to apply to socket itself. *) SOCKET_SOL:WORD:=16#ffff; (* Socket options *) SOCKET_SO_DEBUG:DINT:=16#0001; (* turn on debugging info recording *) SOCKET_SO_ACCEPTCONN:DINT:=16#0002; (* socket has had listen() *) SOCKET_SO_REUSEADDR:DINT:=16#0004; (* allow local address reuse *) SOCKET_SO_KEEPALIVE:DINT:=16#0008; (* keep connections alive *) SOCKET_SO_DONTROUTE:DINT:=16#0010; (* just use interface addresses *) SOCKET_SO_BROADCAST:DINT:=16#0020; (* permit sending of broadcast msgs *) SOCKET_SO_USELOOPBACK:DINT:=16#0040; (* bypass hardware when possible *) SOCKET_SO_LINGER:DINT:=16#0080; (* linger on close if data present *) SOCKET_SO_OOBINLINE:DINT:=16#0100; (* leave received OOB data in line *) SOCKET_SO_REUSEPORT:DINT:=16#0200; (* allow local address & port reuse *) SOCKET_SO_SNDBUF:DINT:=16#1001; (* send buffer size *) SOCKET_SO_RCVBUF:DINT:= 16#1002; (* receive buffer size *) SOCKET_SO_SNDLOWAT:DINT:=16#1003; (* send low-water mark *) SOCKET_SO_RCVLOWAT:DINT:=16#1004; (* receive low-water mark *) SOCKET_SO_SNDTIMEO:DINT:=16#1005; (* send timeout *) SOCKET_SO_RCVTIMEO:DINT:=16#1006; (* receive timeout *) SOCKET_SO_ERROR:DINT:=16#1007; (* get error status and clear *) SOCKET_SO_TYPE:DINT:=16#1008; (* get socket type *) SOCKET_SO_PROTOTYPE:DINT:=16#1009; (* get/set protocol type *) (* TCPIP socket options *) SOCKET_TCP_NODELAY:DINT:=16#01; (* don't delay send to coalesce packets *) SOCKET_TCP_MAXSEG:DINT:=16#02; (* set maximum segment size *) (* Socket types *) SOCKET_STREAM:DINT:=1; (* stream socket *) SOCKET_DGRAM:DINT:=2; (* datagram socket *) SOCKET_RAW:DINT:=3; (* raw-protocol interface *) SOCKET_RDM:DINT:=4; (* reliably-delivered message *) SOCKET_SEQPACKET:DINT:=5; (* sequenced packet stream *) (* Inet address definitions *) SOCKET_INADDR_ANY:UDINT:=16#00000000; SOCKET_INADDR_LOOPBACK:UDINT:=16#7f000001; SOCKET_INADDR_BROADCAST:UDINT:=16#ffffffff; SOCKET_INADDR_NONE:UDINT:=16#ffffffff; (* Protocols *) SOCKET_IPPROTO_IP:DINT:=0; (* dummy for IP *) SOCKET_IPPROTO_ICMP:DINT:=1; (* control message protocol *) SOCKET_IPPROTO_IGMP:DINT:=2; (* group management protocol *) SOCKET_IPPROTO_GGP:DINT:=3; (* gateway^2 (deprecated) *) SOCKET_IPPROTO_TCP:DINT:=6; (* tcp *) SOCKET_IPPROTO_PUP:DINT:=12; (* pup *) SOCKET_IPPROTO_UDP:DINT:=17; (* user datagram protocol *) SOCKET_IPPROTO_IDP:DINT:=22; (* xns idp *) SOCKET_IPPROTO_ND:DINT:=77; (* UNOFFICIAL net disk proto *) SOCKET_IPPROTO_RAW:DINT:=255; (* raw IP packet *) SOCKET_IPPROTO_MAX:DINT:=256; (* Flags *) SOCKET_MSG_OOB:DINT:=16#1; (* process out-of-band data *) SOCKET_MSG_PEEK:DINT:=16#2; (* peek at incoming message *) SOCKET_MSG_DONTROUTE:DINT:=16#4; (* send without using routing tables *) (* Ioctl commands *) SOCKET_FIONREAD:DINT:=1; (* get num chars available to read *) SOCKET_FIONBIO:DINT:=2; (* set to non-blocking *) (* For SysSockSelect() descriptors *) SOCKET_FD_SETSIZE :DINT := 64; MAX_SOCKET_FD_SETSIZE : DINT := 63; END_VAR  ',,,‘¥INADDR¥‚RA ¥‚RAKie e n;TYPE INADDR : STRUCT S_addr:DWORD; END_STRUCT END_TYPE (,<n¡ç SOCKADDRESS¥‚RA ¥‚RAtÐ aG†TYPE SOCKADDRESS : STRUCT sin_family:INT; sin_port:UINT; sin_addr:UDINT; sin_zero:ARRAY [0..7] OF SINT; END_STRUCT END_TYPE ),nnÓç SOCKET_FD_SET¥‚RA ¥‚RAFle D PyTYPE SOCKET_FD_SET : STRUCT fd_count:UDINT; fd_array:ARRAY [0..MAX_SOCKET_FD_SETSIZE] OF DINT; END_STRUCT END_TYPE 7,XX=Å SOCKET_LINGER¥‚RA ¥‚RAÜ0aReSTYPE SOCKET_LINGER : STRUCT l_onoff:WORD; l_linger:WORD; END_STRUCT END_TYPE *,ššÿSOCKET_TIMEVAL¥‚RA ¥‚RAna 1.1STYPE SOCKET_TIMEVAL : STRUCT tv_sec:DINT; tv_usec:DINT; END_STRUCT END_TYPE,—¯þ SysSockAccept¥‚RA ¥‚RAde`a..ÓFUNCTION SysSockAccept : DINT VAR_INPUT diSocket:DINT; pSockAddr:DWORD; (* Address of SocketAddress (SOCKADDRESS) *) piSockAddrSize:DWORD; (* Address of socket address size (DINT)*) END_VAR VAR END_VAR;,(•Ãü SysSockBind¥‚RA ¥‚RAfü`a..ÄFUNCTION SysSockBind : BOOL VAR_INPUT diSocket:DINT; pSockAddr:DWORD; (* Address of SocketAddress (SOCKADDRESS) *) diSockAddrSize:DINT; (* Size of socket address *) END_VAR VAR END_VAR;,<˜ÁW SysSockClose¥‚RA ¥‚RAna 1.1OFUNCTION SysSockClose : BOOL VAR_INPUT diSocket:DINT; END_VAR VAR END_VAR;,@“ÛúSysSockConnect¥‚RA ¥‚RAàë`øÀ½`ÇÇFUNCTION SysSockConnect : BOOL VAR_INPUT diSocket:DINT; pSockAddr:DWORD; (* Address of SocketAddress (SOCKADDRESS) *) diSockAddrSize:DINT; (* Size of socket address *) END_VAR VAR END_VAR; ,:´Õs SysSockCreate¥‚RA ¥‚RAPa..yFUNCTION SysSockCreate : DINT VAR_INPUT diAddressFamily:DINT; diType:DINT; diProtocol:DINT; END_VAR VAR END_VAR;,#–¾ýSysSockGetHostByName¥‚RA ¥‚RAna 1.1gFUNCTION SysSockGetHostByName : DWORD VAR_INPUT stHostName:POINTER TO STRING; END_VAR VAR END_VAR;,.•ÉüSysSockGetHostName¥‚RA ¥‚RAˆ‚ypD,ntyFUNCTION SysSockGetHostName : BOOL VAR_INPUT stHostName:POINTER TO STRING; diNameLength:DINT; END_VAR VAR END_VAR;ÍÍÍÍÍÍÍÍSysSockGetLastErrorlŸpB lŸpBÍÍÍÍÍÍÍÍxFUNCTION_BLOCK SysSockGetLastError VAR_INPUT bEnable : BOOL; diSocket:DINT; END_VAR VAR_OUTPUT bDone : BOOL; bBusy : BOOL; bError :BOOL; wErrorId : WORD; dwLastError: DWORD; END_VAR VAR (* The next array is used by the system to store internal data and is not interesting to any user. *) adwJobData : ARRAY[0..31] OF DWORD; bOldEnable : BOOL; END_VAR;,6”»SSysSockGetOption¥‚RA ¥‚RAam aQáFUNCTION SysSockGetOption : BOOL VAR_INPUT diSocket:DINT; diLevel:DINT; diOption:DINT; pOptionValue:DWORD; (* Address of option *) piOptionLength:DWORD; (* Address of option size (DINT) *) END_VAR VAR END_VAR;,"½ SysSockHtonl¥‚RA ¥‚RA10OFUNCTION SysSockHtonl : DWORD VAR_INPUT dwHost:DWORD; END_VAR VAR END_VAR;,+•Æü SysSockHtons¥‚RA ¥‚RA_V!¬¬LFUNCTION SysSockHtons : WORD VAR_INPUT wHost:WORD; END_VAR VAR END_VAR;,-—ÈþSysSockInetAddr¥‚RA ¥‚RA€Þ@!¬¬UFUNCTION SysSockInetAddr : DWORD VAR_INPUT stIPAddr:STRING; END_VAR VAR END_VAR;,š·SysSockInetNtoa¥‚RA ¥‚RAa..zFUNCTION SysSockInetNtoa : BOOL VAR_INPUT InAddr:INADDR; stIPAddr:STRING; diIPAddrSize:DINT; END_VAR VAR END_VAR;>,XX¦ SysSockIoctl¥‚RA ¥‚RAarð aRe˜FUNCTION SysSockIoctl : DINT VAR_INPUT diSocket:DINT; diCommand:DINT; piParameter:DWORD; (* Address of parameter (DINT) *) END_VAR VAR END_VAR;,•²ü SysSockListen¥‚RA ¥‚RAE·0a..iFUNCTION SysSockListen : BOOL VAR_INPUT diSocket:DINT; diMaxConnections:DINT; END_VAR VAR END_VAR;,(¨Ã SysSockNtohl¥‚RA ¥‚RA0»°aINFUNCTION SysSockNtohl : DWORD VAR_INPUT dwNet:DWORD; END_VAR VAR END_VAR;,G–âý SysSockNtohs¥‚RA ¥‚RAampa..KFUNCTION SysSockNtohs : WORD VAR_INPUT wNet:WORD; END_VAR VAR END_VAR; ,I•ÎT SysSockRecv¥‚RA ¥‚RAP.ÿÿªFUNCTION SysSockRecv : DINT VAR_INPUT diSocket:DINT; pbyBuffer:DWORD; (* Address of buffer to receive *) diBufferSize:DINT; diFlags:DINT; END_VAR VAR END_VAR;",Ç™†SysSockRecvFrom¥‚RA ¥‚RAamp a..#FUNCTION SysSockRecvFrom : DINT VAR_INPUT diSocket:DINT; pbyBuffer:DWORD; (* Address of buffer to receive *) diBufferSize:DINT; diFlags:DINT; pSockAddr:DWORD; (* Address of socket address SOCKADDRESS*) diSockAddrSize:DINT; (* Size of socket address *) END_VAR VAR END_VAR;,=”Øû SysSockSelect¥‚RA ¥‚RA„€`|€´(* This routine permits a task to pend until one of a set of sockets handles becomes ready. Three parameters -- fdRead, fdWrite and fdExcept -- point to file descriptor sets in which each array entry corresponds to a particular socket handle. If a socket handle is not ready, it will be written in the array to -1 (SOCKET_INVALID). With the timeout value, a timeout for the operation can be specified. diWidth is the size of the fd_array array in SOCKETFD_SET. The function returns the operating system result. <0: Error 0: Timeout exoired >0: Typically number of sockets that are successully selected *) FUNCTION SysSockSelect : DINT VAR_INPUT diWidth:DINT; (* Typically SOCKET_FD_SETSIZE *) fdRead:DWORD; (* Address of SOCKET_FD_SET *) fdWrite:DWORD; (* Address of SOCKET_FD_SET *) fdExcept:DWORD; (* Address of SOCKET_FD_SET *) ptvTimeout:DWORD; (* Address of SOCKET_TIMEVAL *) END_VAR VAR END_VAR;!,=–ÂU SysSockSend¥‚RA ¥‚RA00ªFUNCTION SysSockSend : DINT VAR_INPUT diSocket:DINT; pbyBuffer:DWORD; (* Address of buffer to receive *) diBufferSize:DINT; diFlags:DINT; END_VAR VAR END_VAR;#,C±Èp SysSockSendTo¥‚RA ¥‚RAna 1.1!FUNCTION SysSockSendTo : DINT VAR_INPUT diSocket:DINT; pbyBuffer:DWORD; (* Address of buffer to receive *) diBufferSize:DINT; diFlags:DINT; pSockAddr:DWORD; (* Address of socket address SOCKADDRESS *) diSockAddrSize:DINT; (* Size of socket address *) END_VAR VAR END_VAR;,@•ÛüSysSockSetIPAddress¥‚RA ¥‚RAna 1.1pFUNCTION SysSockSetIPAddress : BOOL VAR_INPUT stCardName:STRING; stIPAddress:STRING; END_VAR VAR END_VAR;,:˜¿WSysSockSetOption¥‚RA ¥‚RAˆ"ða..ÕFUNCTION SysSockSetOption : BOOL VAR_INPUT diSocket:DINT; diLevel:DINT; diOption:DINT; pOptionValue:DWORD; (* Address of option *) diOptionLength:DINT; (* Length of option *) END_VAR VAR END_VAR;,4˜¹WSysSockShutdown¥‚RA ¥‚RAzu€!SY`FUNCTION SysSockShutdown : BOOL VAR_INPUT diSocket:DINT; diHow:DINT; END_VAR VAR END_VAR;ýÿÿÿ,*y Bausteine TCP specific SysSockRecv  SysSockSend!ÿÿÿÿ UDP specificSysSockRecvFrom" SysSockSendTo#ÿÿÿÿ SysSockAccept SysSockBind SysSockCloseSysSockConnect SysSockCreate SysSockGetHostByNameSysSockGetHostNameSysSockGetLastErrorSysSockGetOption SysSockHtonl SysSockHtonsSysSockInetAddrSysSockInetNtoa SysSockIoctl> SysSockListen SysSockNtohl SysSockNtohs SysSockSelectSysSockSetIPAddressSysSockSetOptionSysSockShutdownÿÿÿÿ DatentypenINADDR' SOCKADDRESS( SOCKET_FD_SET) SOCKET_LINGER7SOCKET_TIMEVAL*ÿÿÿÿGlobale VariablenGlobale_VariablenÿÿÿÿVisualisierungenÿÿÿÿTCP/UDP socket system library2.4.1.53S - Smart Software Solutions6Change History: 28.04.05 PB added SysSockGetLastErrortòŸB5È