Mã:
#include "stdafx.h"#ifndef UNICODE#define UNICODE#endif #define WIN32_LEAN_AND_MEAN#include <iostream>#include <stdio.h>#include <winsock2.h>#include <fstream>#pragma comment (lib,"ws2_32.lib")using namespace std; #define DEFAULT_BUFLEN 1025#define DEFAULT_PORT 80void send_http(SOCKET ConnectSocket){ char * get = "GET / HTTP/1.1
"; char * hots = "Host: dantri.com.vn
"; char *use_agen = "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.17) Gecko/20110420 Firefox/3.6.17
"; char *st = "Connection: Keep-Alive
"; char * acc_encoding ="Accept-Encoding: gzip
"; char * acc_languege = "Accept-Charset: ISO-8859-1,UTF-8;q=0.7,*;q=0.7
"; char *cache = "Cache-Control: no-cache
"; char *relink = "Referer: http://google.com/
"; // gui ...du lieu send( ConnectSocket, get, (int)strlen(get), 0 ); send( ConnectSocket, hots, (int)strlen(hots), 0 ); send( ConnectSocket, acc_encoding, (int)strlen(acc_encoding), 0 ); send( ConnectSocket, acc_languege, (int)strlen(acc_languege), 0 ); send( ConnectSocket, cache, (int)strlen(cache), 0 ); send( ConnectSocket, st, (int)strlen(st), 0 ); send( ConnectSocket, use_agen, (int)strlen(use_agen), 0 ); send( ConnectSocket, relink, (int)strlen(relink), 0 ); } /////////////////////////////////////////////////////////////////int main() { // Khai báo kh?i t?o socket int iResult; WSADATA wsaData; hostent *ConnectPC=NULL; fstream file; struct sockaddr_in clientService; size_t new_size; SOCKET ConnectSocket; char recvbuf[DEFAULT_BUFLEN] = {0}; WSAPROTOCOL_INFO *lpProtocolBuf = NULL; DWORD dwErr,dwBufLen = 0; // Khai báo thông s? cho s? lý s? ki?n DWORD event_total=0; DWORD index; WSAEVENT EventArray[WSA_MAXIMUM_WAIT_EVENTS],new_event; WSANETWORKEVENTS NetworkEvents; //---------------------- iResult = WSAStartup(MAKEWORD(2,2), &wsaData); if (iResult != NO_ERROR) { wprintf(L"WSAStartup failed with error: %d
", iResult); } // ===============bo dem ====================== int nRet = WSAEnumProtocols(NULL, lpProtocolBuf, &dwBufLen); if(nRet != SOCKET_ERROR){ cout<<"goi lan 1
"; } else if((dwErr = WSAGetLastError()) != WSAENOBUFS){ cout<<"WSAEnumProtocols() failed with code %d
"<<WSAGetLastError(); } else{ cout<<"is ok
"; lpProtocolBuf = (WSAPROTOCOL_INFO *)malloc(dwBufLen); if (lpProtocolBuf) { nRet = WSAEnumProtocols(NULL, lpProtocolBuf, &dwBufLen); if (nRet == SOCKET_ERROR) { printf("WSAEnumProtocols() failed with code %d
", WSAGetLastError()); } else { cout<<"rat ok
"; } } } ConnectSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if (ConnectSocket == INVALID_SOCKET) { wprintf(L"socket failed with error: %ld
", WSAGetLastError()); WSACleanup(); return 1; } char * domain ="dantri.com.vn"; ConnectPC = gethostbyname(domain); clientService.sin_family = AF_INET; clientService.sin_addr.s_addr = (*(DWORD*)ConnectPC->h_addr_list[0]); clientService.sin_port = htons( DEFAULT_PORT ); iResult = connect( ConnectSocket, (SOCKADDR*) &clientService, sizeof(clientService) ); if (iResult == SOCKET_ERROR) { wprintf(L"connect failed with error: %d
", WSAGetLastError() ); closesocket(ConnectSocket); WSACleanup(); return 1; } /////////////////////////////// EventArray[event_total] = WSACreateEvent(); WSAEventSelect(ConnectSocket,EventArray[event_total],FD_CONNECT | FD_WRITE | FD_READ); event_total++; index = WSAWaitForMultipleEvents(event_total, EventArray, FALSE, WSA_INFINITE, FALSE); // tr? v? t?ng s? các s? ki?n ..... WSAEnumNetworkEvents(ConnectSocket,EventArray[index - WSA_WAIT_EVENT_0],&NetworkEvents); cout<<"kukuchima
"; if(NetworkEvents.lNetworkEvents & FD_CONNECT) { if (NetworkEvents.iErrorCode[FD_CONNECT_BIT] == 0){ cout<<"xuat hien mot yeu cau ket noi ....
"; send_http(ConnectSocket); } else{ cout<<"Loi su kien connect ! ma loi ..."<<WSAGetLastError()<<endl; } } //====================================== if(NetworkEvents.lNetworkEvents & FD_WRITE) { if(NetworkEvents.iErrorCode[FD_WRITE_BIT] == 0) { cout<<" Dang gui Request toi sever .....
"; index = WSAWaitForMultipleEvents(event_total, EventArray, FALSE, 5000, FALSE); WSAEnumNetworkEvents(ConnectSocket,EventArray[index - WSA_WAIT_EVENT_0],&NetworkEvents); } else{ cout<<"Loi su kien gui ......"<<WSAGetLastError()<<endl; } } //esle{cout<<"Chua "<<endl;} //=============================================== if(NetworkEvents.lNetworkEvents & FD_READ) { if(NetworkEvents.iErrorCode[FD_READ_BIT] == 0) { cout<<" Du lieu gui ve thanh cong . Da san sang de doc o bo dem .....
";//<<WSAGetLastError()<<endl; int sl =0; int iRes=0; do{ iRes = recv(ConnectSocket, recvbuf, sizeof(recvbuf)-1, 0); sl = sl+1; //cout<<sl<<endl; cout<<"
so byet nhan"<<iRes<<" --lan nhan thu"<<sl<<"------
"; if(iRes < 0) { cout<<"da nhan xong du lieu
"; break; } else{ } // goi lai ham WSAWaitForMultipleEvents index = WSAWaitForMultipleEvents(event_total, EventArray, FALSE, 5000, FALSE); WSAEnumNetworkEvents(ConnectSocket,EventArray[index - WSA_WAIT_EVENT_0],&NetworkEvents); // cong viec su ly du lieu ....neu co recvbuf[iRes]=0; }while(iRes>0); } else { cout<<"Loi su kien doc du lieu .....
"; } } iResult = closesocket(ConnectSocket); if (iResult == SOCKET_ERROR) { wprintf(L"close failed with error: %d
", WSAGetLastError()); WSACleanup(); return 1; } free(lpProtocolBuf); WSACleanup(); cin>>iResult; return iResult; }
Phần em bị vướng là hàm WSAWaitFormuti .... trong đoạn
Thanh lý pallet nhựa cũ Đaklak Trải dài trên vùng đất Daklak, những chiếc pallet nhựa cũ Đaklak nằm rải rác như những bức tranh tĩnh lặng, kể lể về những chặng đường mà chúng đã đi qua. Những đường...
Thanh lý pallet nhựa cũ Đaklak