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

📄 minisoap.c

📁 很小的linux下的upnp客户端代码
💻 C
字号:
/* $Id: minisoap.c,v 1.11 2007/05/19 13:13:08 nanard Exp $ *//* Project : miniupnp * Author : Thomas Bernard * Copyright (c) 2005 Thomas Bernard * This software is subject to the conditions detailed in the * LICENCE file provided in this distribution. * * Minimal SOAP implementation for UPnP protocol. */#include <stdio.h>#include <string.h>#ifdef WIN32#include <io.h>#include <winsock2.h>#define snprintf _snprintf#else#include <unistd.h>#include <sys/types.h>#include <sys/socket.h>#endif#include "minisoap.h"/* only for malloc */#include <stdlib.h>/* httpWrite sends the headers and the body to the socket * and returns the number of bytes sent */static inthttpWrite(int fd, const char * body, int bodysize,          const char * headers, int headerssize){	int n = 0;	/*n = write(fd, headers, headerssize);*/	/*if(bodysize>0)		n += write(fd, body, bodysize);*/	/* Note : my old linksys router only took into account	 * soap request that are sent into only one packet */	char * p;	p = malloc(headerssize+bodysize);	memcpy(p, headers, headerssize);	memcpy(p+headerssize, body, bodysize);	/*n = write(fd, p, headerssize+bodysize);*/	n = send(fd, p, headerssize+bodysize, 0);#ifdef WIN32	shutdown(fd, SD_SEND);#else	shutdown(fd, SHUT_WR);	/*SD_SEND*/#endif	free(p);	return n;}/* self explanatory  */int soapPostSubmit(int fd,                   const char * url,				   const char * host,				   unsigned short port,				   const char * action,				   const char * body){	int bodysize;	char headerbuf[1024];	int headerssize;	bodysize = (int)strlen(body);	headerssize = snprintf(headerbuf, sizeof(headerbuf),                       "POST %s HTTP/1.1\r\n"	                   "HOST: %s:%d\r\n"	                   "Content-length: %d\r\n"					   "Content-Type: text/xml\r\n"					   "SOAPAction: \"%s\"\r\n"					   "Connection: Close\r\n"					   "\r\n",					   url, host, port, bodysize, action);	return httpWrite(fd, body, bodysize, headerbuf, headerssize);}

⌨️ 快捷键说明

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