basic.%accept C Function/BASIC Program


Command basic.%accept C Function/BASIC Program
Applicable release versions: AP/Unix
Category BASIC Program (486)
Description extracts the first connection on the queue of pending connections, creates a new socket and allocates a new file descriptor.

To compile successfully, the statement 'cfunction socket.builtin' must be included in the source code.

'socket' Is the file descriptor of the local socket returned by a previous call to the Pick/BASIC C function '%socket'.

Upon successful completion, a value of 0 is returned in 'code', and the following Pick/BASIC variables are updated:

'address' Originating address of the incoming call.

'port' Originating port number or the incoming call.

In the case of an error, a value of -1 is returned and the (Pick/BASIC) function 'system(0)' is set to the value of 'errno'.
Syntax code =%accept( socket, &address, &port )
cfunction socket.builtin
include dm,bp,unix.h socket.h
* Create a socket
fd=%socket( AF$INET, SOCKET$STREAM, 0 )
* Bind the socket to a local Ethernet port.
* Use default address.
if %bind( fd, AF$INET, INADDR$ANY, 1024 )<0 then
  crt 'bind failed'; stop
* Wait for incoming connection
%listen( fd, 1 )
* Accept a connection
addr=0; port=0
fd=%accept( socket, &addr, &port )
crt 'Called by address ':addr:', port #':port
* Read data from the data link
%read( fd, buffer, 1024 )
Related basic.%listen