\ Copyright 2021 Bradley D. Nelson \ \ Licensed under the Apache License, Version 2.0 (the "License"); \ you may not use this file except in compliance with the License. \ You may obtain a copy of the License at \ \ http://www.apache.org/licenses/LICENSE-2.0 \ \ Unless required by applicable law or agreed to in writing, software \ distributed under the License is distributed on an "AS IS" BASIS, \ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. \ See the License for the specific language governing permissions and \ limitations under the License. ( Sockets ) vocabulary sockets sockets definitions also posix z" socket" 3 sysfunc socket z" bind" 3 sysfunc bind z" listen" 2 sysfunc listen z" connect" 3 sysfunc connect z" accept" 3 sysfunc sockaccept z" poll" 3 sysfunc poll z" setsockopt" 5 sysfunc setsockopt z" send" 4 sysfunc send z" sendto" 6 sysfunc sendto z" sendmsg" 3 sysfunc sendmsg z" recv" 4 sysfunc recv z" recvfrom" 6 sysfunc recvfrom z" recvmsg" 3 sysfunc recvmsg z" gethostbyname" 1 sysfunc gethostbyname 1 constant SOCK_STREAM 2 constant SOCK_DGRAM 3 constant SOCK_RAW 2 constant AF_INET 16 constant sizeof(sockaddr_in) 1 constant SOL_SOCKET 2 constant SO_REUSEADDR : bs, ( n -- ) dup 8 rshift c, c, ; : s, ( n -- ) dup c, 8 rshift c, ; : l, ( n -- ) dup s, 16 rshift s, ; : sockaddr create AF_INET s, 0 bs, 0 l, 0 l, 0 l, ; : ->port@ ( a -- n ) 2 + >r r@ c@ 8 lshift r> 1+ c@ + ; : ->port! ( n a -- ) 2 + >r dup 8 rshift r@ c! r> 1+ c! ; : ->addr@ ( a -- n ) 4 + ul@ ; : ->addr! ( n a -- ) 4 + l! ; : ->h_addr ( hostent -- n ) 2 cells + 8 + @ @ ul@ ; : ip# ( n -- n ) dup 255 and n. [char] . emit 8 rshift ; : ip. ( n -- ) ip# ip# ip# 255 and n. ; ( Fixup return ) : sockaccept sockaccept sign-extend ; only forth definitions
Legal: site web personnel sans commerce / personal site without seling