# Sockets On Unix hosts, RETRO provides an optional set of words for using network sockets. ## Create a Socket To create a new socket, just run: socket:create This will return a socket handle. ## Bind To A Port To bind to a port, pass the port number and socket handle to `socket:bind`. The port should be a string. This will return 0 if successful, -1 if not successful, and an error code. '9998 @Sock socket:bind ## Configure To Allow Incoming Connections To prepare a socket for incoming connections use socket:listen. This will take a backlog count and a socket handle. It returns a flag (0 success, -1 failed) and an error code. #3 @Sock socket:listen ## Accept Connections To accept connections pass the socket handle to `socket:accept`. This returns a new socket for the connection and an error code. @Sock socket:accept ## Make A Connection To connect to a server using the socket: 'forth.works '70 socket:configure @Sock socket:connect `socket:connect` will return a status code and an error code. ## Writing To A Socket To write a string to a socket, use `socket:send`. This will take a string and a socket handle and will return the number of bytes sent and an error code. 'test @Sock socket:send ## Reading From A Socket To read data from a socket pass an address, a maximum number of bytes, and the socket handle to `socket:recv`. This will return the number of bytes received and an error code. The bytes will be stored in memory starting at the specified address. here #1024 @Sock socket:recv ## Close a Socket To close a socket, pass the socket handle to `socket:close`. @Socket socket:close