Thông tin tài liệu
/*
HHTP CLIENT EXAMPLE
*HTTP RFC
SP: space (khoang trang)
CRLF: \r\n
REQUEST SYNTAX:
Request = Request-Line
*( general-header
| request-header
| entity-header )
CRLF
[ message-body ]
Request-Line = Method SP Request-URI SP
HTTP-Version CRLF
Method = "OPTIONS"
| "GET"
| "HEAD"
| "POST"
| "PUT"
| "DELETE"
| "TRACE"
| extension-method
Request-URI = "*" | absoluteURI |
abs_path
Ex : absoluteURI:
http://www.w3.org/pub/WWW/TheProject.html
abs_path:
/pub/WWW/TheProject.html
HTTP-Version = "HTTP/1.1"
| "HTTP/1.0"
EX:
GET
http://www.w3.org/pub/WWW/TheProject.html HTTP/1.1
Host: www.w3.org
or:
GET /pub/WWW/TheProject.html HTTP/1.1
*/
#include <winsock.h>
#
include <stdio.h>
//////
#
define MY_PORT 80
#
define SERVER_ADDR "www3.tuoitre.com.vn"
#
define URL
"http://www3.tuoitre.com.vn/transweb/tygia.htm"
void makeRequestStr(char * buffer,const char *
url, const char * host)
{
/*
Example:
s = "GET
http://www3.tuoitre.com.vn/transweb/tygia.htm
HTTP/1.1\r\n";
s += "Host: www3.tuoitre.com.vn\r\n";
s += "Connection: Close\r\n\r\n";
*/
strcpy(buffer,"GET ");strcat(buffer,url);
strcat(buffer," HTTP/1.1\r\n");
strcat(buffer,"HOST:
");strcat(buffer,host);strcat(buffer,"\r\n");
strcat(buffer,"CONNECTION: CLOSE\r\n\r\n");
}
u_long
LookupAddress(const char* pcHost);
void
error(char * msg);
int
main(int argc, char* argv[])
{
WSADATA wsaData;
WSAStartup(MAKEWORD(1,1),&wsaData);
///////////////////////////
printf("Client ");
SOCKET wsk=socket(AF_INET,SOCK_STREAM,0);
struct hostent
*hostname=gethostbyname(SERVER_ADDR);
/////////////////////////////
struct sockaddr_in server_addr;
server_addr.sin_family = AF_INET;
server_addr.sin_addr.S_un.S_addr=LookupAddre
ss(SERVER_ADDR);
server_addr.sin_port = htons(MY_PORT);
if (connect(wsk,(struct
sockaddr*)&server_addr,sizeof(server_addr)) < 0)
error("ERROR connecting");
printf("connected!\n");
//Send REQUEST
char buffer[1024];int n;
makeRequestStr(buffer,URL,SERVER_ADDR);
send(wsk,buffer,strlen(buffer),0);
//GET RESPONSE
printf("Http content: ");
n = recv(wsk,buffer,1024,0);
buffer[n]='\0';
printf("%s\n",buffer);
closesocket(wsk);
///////////////////////////
WSACleanup();
return 0;
}
void
error(char * msg)
{
printf("%s\n",msg);
exit(0);
}
u_long
LookupAddress(const char* pcHost)
{
u_long nRemoteAddr = inet_addr(pcHost);
if (nRemoteAddr == INADDR_NONE) {
// pcHost isn't a dotted IP, so resolve it
through DNS
hostent* pHE = gethostbyname(pcHost);
if (pHE == 0) {
return INADDR_NONE;
}
nRemoteAddr = *((u_long*)pHE-
>h_addr_list[0]);
}
return nRemoteAddr;
}
. /*
HHTP CLIENT EXAMPLE
*HTTP RFC
SP: space (khoang trang)
CRLF:
REQUEST SYNTAX:
.
"http://www3.tuoitre.com.vn/transweb/tygia.htm"
void makeRequestStr(char * buffer,const char *
url, const char * host)
{
/*
Example:
s = "GET
http://www3.tuoitre.com.vn/transweb/tygia.htm
HTTP/1.1
";
Ngày đăng: 26/01/2014, 17:20
Xem thêm: Tài liệu HHTP CLIENT EXAMPLE ppt, Tài liệu HHTP CLIENT EXAMPLE ppt