From the NannyMUD documentation

LAST CHANGE

2001-10-02

FUNCTION


NAME

        socket_create - Create an efun socket.

SYNTAX

        #include 
        #include 

        int socket_create(int mode, string read_callback,
        		  string|void close_callback)

DESCRIPTION

	socket_create() creates an efun socket.  mode determines which
	type of socket is created. Currently supported socket modes are:

        MUD - for sending LPC data types using TCP protocol.
        STREAM - for sending raw data using TCP protocol.
        DATAGRAM - for using UDP protocol.

        The argument read_callback is the name of a function for the
        driver to call when the socket gets data from its peer. The
        read callback should follow this format:

        void read_callback(int fd, mixed message)

	Where fd is the socket which received the data, and message is
        the data which was received.

	The argument close_callback is the name of a function for the
        driver to call if the socket closes unexpectedly, i.e.  not as
        the result of a socket_close(3) call. The close call- back
        should follow this format:

        void close_callback(int fd)

	Where fd is the socket which has closed.  NOTE: close_callback
        is not used with DATAGRAM mode sockets.

        RETURN VALUE
        socket_create() returns:

        a non-negative descriptor on success.

        a negative value indicated below on error.

	ERRORS
        EEMODENOTSUPP  Socket mode not supported.
        EESOCKET       Problem creating socket.
        EESETSOCKOPT   Problem with setsockopt.
        EENONBLOCK     Problem setting non-blocking mode.
        EENOSOCKS      No more available efun sockets.
        EESECURITY     Security violation attempted.

SEE ALSO

        socket_accept in efun/socket/socket_accept

SEE ALSO

        socket_bind in efun/socket/socket_bind

SEE ALSO

        socket_close in efun/socket/socket_close

SEE ALSO

        socket_connect in efun/socket/socket_connect

SEE ALSO

        socket_listen in efun/socket/socket_listen