(c-system-include "sys/types.h") (c-system-include "sys/socket.h") (c-system-include "netinet/in.h") (c-system-include "netdb.h") (define-c-int-type socklen_t) (define-c-struct sockaddr predicate: sockaddr?) (define-c-struct addrinfo constructor: (make-address-info ai_family ai_socktype ai_protocol) finalizer: freeaddrinfo predicate: address-info? (int ai_family address-info-family) (int ai_socktype address-info-socket-type) (int ai_protocol address-info-protocol) ((link sockaddr) ai_addr address-info-address) (size_t ai_addrlen address-info-address-length) ((link addrinfo) ai_next address-info-next)) ;;> The addrinfo struct accessors. ;;/ (define-c errno (%get-address-info getaddrinfo) (string string (maybe-null addrinfo) (result free addrinfo))) ;;> Bind a name to a socket. (define-c int bind (int sockaddr int)) ;;> Listen on a socket. (define-c int listen (int int)) ;;> Accept a connection on a socket. (define-c int accept (int sockaddr (pointer socklen_t))) ;;> Create an endpoint for communication. (define-c int socket (int int int)) ;;> Initiate a connection on a socket. (define-c int connect (int sockaddr int)) (define-c-const int (address-family/unix "AF_UNIX")) (define-c-const int (address-family/inet "AF_INET")) (define-c-const int (socket-type/stream "SOCK_STREAM")) (define-c-const int (socket-type/datagram "SOCK_DGRAM")) (define-c-const int (socket-type/raw "SOCK_RAW")) (define-c-const int (ip-proto/tcp "IPPROTO_TCP")) (define-c-const int (ip-proto/udp "IPPROTO_UDP")) ;;> The constants for the addrinfo struct. ;;/