strcat(buffer,"HOST: ");strcat(buffer,host);strcat(buffer,"\r\n"); strcat(buffer,"CONNECTION: CLOSE\r\n\r\n"); } /* HHTP CLIENT EXAMPLE *HTTP RFC SP: space (khoang trang) CRLF: \r\n

REQUEST SYNTAX: u_long LookupAddress(const char* pcHost); void error(char * msg);

int main(int argc, char* argv[]) {

Request = Request-Line *( general-header | request-header | entity-header ) CRLF [ message-body ]

WSADATA wsaData; WSAStartup(MAKEWORD(1,1),&wsaData); /////////////////////////// printf("Client..."); SOCKET wsk=socket(AF_INET,SOCK_STREAM,0); Request-Line = Method SP Request-URI SP struct hostent HTTP-Version CRLF *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 Method = "OPTIONS" | "GET" | "HEAD" | "POST" | "PUT" | "DELETE" | "TRACE" | extension-method sockaddr*)&server_addr,sizeof(server_addr)) < 0) error("ERROR connecting"); 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

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; } http://www.w3.org/pub/WWW/TheProject.html HTTP/1.1 Host: www.w3.org or: GET /pub/WWW/TheProject.html HTTP/1.1

void error(char * msg) { */

printf("%s\n",msg); exit(0); }

#include #include ////// #define MY_PORT 80 #define SERVER_ADDR "www3.tuoitre.com.vn" #define URL "http://www3.tuoitre.com.vn/transweb/tygia.htm"

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]); } 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"; */

return nRemoteAddr; } strcpy(buffer,"GET ");strcat(buffer,url); strcat(buffer," HTTP/1.1\r\n");