⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uri.h

📁 原来由英特尔制定的UPnP SDK的
💻 H
📖 第 1 页 / 共 2 页
字号:
**	Note :************************************************************************/int token_cmp( token *in1,  token *in2);/*************************************************************************	Function :	parse_port**	Parameters :*		int max ;	sets a maximum limit*		char * port ;	port to be parsed.*		unsigned short * out ;	 out parameter where the port is parsed *							and converted into network format**	Description : parses a port (i.e. '4000') and converts it into a *		network ordered unsigned short int.**	Return : int ;**	Note :************************************************************************/int parse_port(int max, const char *port, unsigned short int *out);/*************************************************************************	Function :	parse_hostport**	Parameters :*		char *in ;	string of characters representing host and port*		int max ;	sets a maximum limit*		hostport_type *out ;	out parameter where the host and port*					are represented as an internet address**	Description : Parses a string representing a host and port*		(e.g. "127.127.0.1:80" or "localhost") and fills out a *		hostport_type struct with internet address and a token *		representing the full host and port.  uses gethostbyname.**	Return : int ;**	Note :************************************************************************/int parse_hostport(const char *in, int max, hostport_type *out );/*************************************************************************	Function :	remove_escaped_chars**	Parameters :*		INOUT char *in ;	string of characters to be modified*		INOUT size_t *size ;	size limit for the number of characters**	Description : removes http escaped characters such as: "%20" and *		replaces them with their character representation. i.e. *		"hello%20foo" -> "hello foo". The input IS MODIFIED in place. *		(shortened). Extra characters are replaced with NULL.**	Return : int ;*		UPNP_E_SUCCESS**	Note :************************************************************************/int remove_escaped_chars(char *in, size_t *size);/*************************************************************************	Function :	remove_dots**	Parameters :*		char *in ;	string of characters from which "dots" have to be *					removed*		int size ;	size limit for the number of characters**	Description : Removes ".", and ".." from a path. If a ".." can not*		be resolved (i.e. the .. would go past the root of the path) an *		error is returned. The input IS modified in place.)**	Return : int ;*		UPNP_E_SUCCESS - On Success*		UPNP_E_OUTOF_MEMORY - On failure to allocate memory*		UPNP_E_INVALID_URL - Failure to resolve URL**	Note :*		Examples*       char path[30]="/../hello";*       remove_dots(path, strlen(path)) -> UPNP_E_INVALID_URL*       char path[30]="/./hello";*       remove_dots(path, strlen(path)) -> UPNP_E_SUCCESS, *       in = "/hello"*       char path[30]="/./hello/foo/../goodbye" -> *       UPNP_E_SUCCESS, in = "/hello/goodbye"************************************************************************/int remove_dots(char * in, int size);/*************************************************************************	Function :	resolve_rel_url**	Parameters :*		char * base_url ;	Base URL*		char * rel_url ;	Relative URL**	Description : resolves a relative url with a base url returning a NEW *		(dynamically allocated with malloc) full url. If the base_url is *		NULL, then a copy of the  rel_url is passed back if the rel_url *		is absolute then a copy of the rel_url is passed back if neither *		the base nor the rel_url are Absolute then NULL is returned.*		otherwise it tries and resolves the relative url with the base *		as described in: http://www.ietf.org/rfc/rfc2396.txt (RFCs *		explaining URIs) *       : resolution of '..' is NOT implemented, but '.' is resolved **	Return : char * ;**	Note :************************************************************************/char * resolve_rel_url( char * base_url,  char * rel_url);/*************************************************************************	Function :	parse_uri**	Parameters :*		char * in ;	character string containing uri information to be *					parsed*		int max ;	maximum limit on the number of characters*		uri_type * out ; out parameter which will have the parsed uri*					information	**	Description : parses a uri as defined in http://www.ietf.org/rfc/*		rfc2396.txt (RFC explaining URIs)*		Handles absolute, relative, and opaque uris. Parses into the *		following pieces: scheme, hostport, pathquery, fragment (path and*		query are treated as one token)*       Caller should check for the pieces they require.**	Return : int ;**	Note :************************************************************************/int parse_uri(const char * in, int max, uri_type * out);/*************************************************************************	Function :	parse_uri_and_unescape**	Parameters :*		char * in ;	*		int max ;	*		uri_type * out ;	**	Description : Same as parse_uri, except that all strings are *		unescaped (%XX replaced by chars)**	Return : int ;**	Note: This modifies 'pathquery' and 'fragment' parts of the input************************************************************************/int parse_uri_and_unescape(char * in, int max, uri_type * out);int parse_token( char * in, token * out, int max_size);/*************************************************************************				commented #defines, functions and typdefs				*************************************************************************//*************************************************************************						Commented #defines								*************************************************************************///#define HTTP_E_BAD_URL UPNP_E_INVALID_URL//#define HTTP_E_READ_SOCKET  UPNP_E_SOCKET_READ//#define HTTP_E_BIND_SOCKET  UPNP_E_SOCKET_BIND//#define HTTP_E_WRITE_SOCKET  UPNP_E_SOCKET_WRITE//#define HTTP_E_CONNECT_SOCKET  UPNP_E_SOCKET_CONNECT//#define HTTP_E_SOCKET    UPNP_E_OUTOF_SOCKET//#define HTTP_E_BAD_RESPONSE UPNP_E_BAD_RESPONSE//#define HTTP_E_BAD_REQUEST UPNP_E_BAD_REQUEST//#define HTTP_E_BAD_IP_ADDRESS UPNP_E_INVALID_URL//#define RESPONSE_TIMEOUT 30/*************************************************************************						Commented typedefs								*************************************************************************///Buffer used to store data read from a socket during an http transfer//in function read_bytes.//typedef struct SOCKET_BUFFER{//  char buff[SOCKET_BUFFER_SIZE];//  int size;//  struct SOCKET_BUFFER *next;//} socket_buffer;//typedef struct HTTP_HEADER {//  token header;//  token value;//  struct HTTP_HEADER * next;//} http_header;//typedef struct HTTP_STATUS_LINE{//  token http_version;//  token status_code;//  token reason_phrase;//} http_status;//typedef struct HTTP_REQUEST_LINE {//  token http_version;//  uri_type request_uri;//  token method;//} http_request;//Represents a parsed HTTP_MESSAGE head_list is dynamically allocated//typedef struct HTTP_MESSAGE {//  http_status status;//  http_request request;//  http_header * header_list;//  token content;//} http_message;/*************************************************************************						Commented functions								*************************************************************************EXTERN_C int transferHTTP( char * request,  char * toSend, 			  int toSendSize, char **out,  char * Url);EXTERN_C int transferHTTPRaw( char * toSend, int toSendSize, 			     char **out,  char *URL);helper functionEXTERN_C int transferHTTPparsedURL( char * request, 				    char * toSend, int toSendSize, 				   char **out, uri_type *URL);assumes that char * out has enough space ( 38 characters)outputs the current time in the following null terminated string: "DATE: Sun, Jul 06 2000 08:53:01 GMT\r\n"EXTERN_C void currentTmToHttpDate(char *out);EXTERN_C int parse_http_response(  char * in, http_message * out, 				  int max_len);EXTERN_C int parse_http_request( char * in, http_message *out, 				int max_len);EXTERN_C void print_http_message( http_message * message);EXTERN_C int search_for_header( http_message * in, 			        char * header, token *out_value);EXTERN_C void print_status_line(http_status *in);EXTERN_C void print_request_line(http_request *in);EXTERN_C int parse_http_line(  char * in, int max_size);EXTERN_C int parse_not_LWS(  char *in, token *out, int max_size);EXTERN_C int parse_LWS( char * in, int max_size);EXTERN_C size_t write_bytes(int fd,   char * bytes, size_t n, 						    int timeout);EXTERN_C void free_http_message(http_message * message);************************************************************************/#ifdef __cplusplus}#endif#endif // GENLIB_NET_URI_H

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -