FreeBSD Manual Pages
TCP_SERVER(3) Library Functions Manual TCP_SERVER(3) NAME tcp_server -- generic TCP server LIBRARY PDEL Library (libpdel, -lpdel) SYNOPSIS #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <pdel/net/tcp_server.h> struct tcp_server * tcp_server_start(struct pevent_ctx *ctx, void *cookie, const char *mtype, struct in_addr ip, u_int16_t port, u_int max_conn, u_int conn_timeout, tcp_setup_t *setup, tcp_handler_t *handler, tcp_teardown_t *teardown); void tcp_server_stop(struct tcp_server **servp); void * tcp_server_get_cookie(struct tcp_server *serv); struct tcp_server * tcp_connection_get_server(struct tcp_connection *conn); void * tcp_connection_get_cookie(struct tcp_connection *conn); int tcp_connection_get_fd(struct tcp_connection *conn); FILE * tcp_connection_get_fp(struct tcp_connection *conn); void tcp_connection_get_peer(struct tcp_connection *conn, struct sockaddr_in *sin); DESCRIPTION These functions provide support for implementing TCP servers. tcp_server_start() creates a new TCP server listening for connections on IP address ip and port port. Memory for the tcp_server is dynami- cally allocated with typed_mem(3) type mtype. At most max_conn simul- taneous connections will be allowed. If conn_timeout is non-zero, then if an attempt to read from or write to a peer blocks for more than conn_timeout seconds, the connection will be terminated. ctx is a pevent(3) event context used to listen for incoming connections. The setup, handler, and teardown arguments are pointers to functions having these types: typedef void *tcp_setup_t(struct tcp_connection *conn); typedef void tcp_handler_t(struct tcp_connection *conn); typedef void tcp_teardown_t(struct tcp_connection *conn); Each connection is represented by a tcp_connection object. For each new connection, setup() is called to initialize user state for the con- nection. If setup is unsuccessful, setup() should return NULL and set errno appropriately, and the connection will be closed. Otherwise, it should return a non-NULL cookie; this cookie can be accessed later in handler() and teardown() by calling tcp_connection_get_cookie(). handler() is used to service the connection. The thread calling this function may be canceled at any cancellation point; therefore, handler() may need to register cleanup hooks to clean up allocated re- sources should that happen. teardown() is called when handler() returns, or the thread is canceled. If setup() returns successfully, teardown() is guaranteed to be called exactly once. tcp_server_stop() stops and destroys a tcp_server. All existing con- nection threads are canceled and the current thread blocks until teardown() has been called for each connection. tcp_connection_get_peer() retrieves the peer's address. tcp_connection_get_server() returns the tcp_server object associated with the connection conn. tcp_connection_get_fd() returns the TCP socket associated with the con- nection. tcp_connection_get_fp() returns a stream opened on top of the socket for use with stream based I/O. The user code should not close either the socket or the stream; these will be closed automatically when the connection is terminated. RETURN VALUES tcp_server_start() returns NULL to indicate an error, with errno set appropriately. SEE ALSO libpdel(3), pevent(3), typed_mem(3) HISTORY The PDEL library was developed at Packet Design, LLC. http://www.packetdesign.com/ AUTHORS Archie Cobbs <archie@freebsd.org> FreeBSD ports 15.0 April 22, 2002 TCP_SERVER(3)
NAME | LIBRARY | SYNOPSIS | DESCRIPTION | RETURN VALUES | SEE ALSO | HISTORY | AUTHORS
Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=tcp_connection_get_peer&sektion=3&manpath=FreeBSD+Ports+15.0>
