2015-09-06 17 views
0

我使用的Winsock2做了一個簡單的網頁瀏覽器,我有它清點來自服務器的響應,但它發送和21000個字節,我需要能夠複製並粘貼HTML,JavaScript的,CSS等用於測試GUI我做了。它總是填滿終端,我看不到它從哪裏開始,我只是在很多javascript的中間。我希望它像在cmd中停止並詢問是否要繼續。如何在頁面已滿後停止輸出文字?

#include <windows.h> 
#include <winsock2.h> 
#include <conio.h> 
#include <stdio.h> 
#include <iostream> 
using namespace std; 
#define SCK_VERSION2 0x0202 
#define DEFAULT_BUFLEN 21000 
#define DEFAULT_PORT 27015 

namespace Globals{ 
    string input = ""; 
    char recvbuf[DEFAULT_BUFLEN]; 
    const char* carf = recvbuf; 
} 
using namespace Globals; 
HWND staticText2 = CreateWindowEx(WS_EX_PALETTEWINDOW, TEXT("Static"), TEXT("Email"), /* email */ 
            WS_CHILD | WS_VISIBLE, 122, 80, 44, 20, 
            /*hwnd*/NULL, NULL, NULL, NULL); 
int sck() { 
    //---------------------- 
    // Declare and initialize variables. 
    WSADATA wsaData; 
    int iResult; 

    SOCKET ConnectSocket = INVALID_SOCKET; 
    struct sockaddr_in clientService; 

    char name[500] = ""; 
    char ipADDRESS[500] = ""; 
    char sPORT[500] = ""; 

    sockaddr_in sName; 
    int sNameSize = sizeof(sName); 

    char const* sendbuf = "GET /?gws_rd=ssl HTTP/1.1\r\n" 
    "Host: www.google.com:80\r\n" 
    "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5 (.NET CLR 3.5.30729)\r\n" 
    "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n" 
    "Accept-Language: en-us,en;q=0.5\r\n" 
    //"Accept-Encoding: gzip,deflate\r\n" 
    "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\r\n" 
    "Keep-Alive: 300\r\n" 
    "Connection: keep-alive\r\n" 
    "Pragma: no-cache\r\n" 
    "DNT: 1" 
    "Cookie: 
    "Cookie: 
    "Cache-Control: no-cache\r\n\r\n"; 
    char recvbuf[DEFAULT_BUFLEN]; 
    int recvbuflen = DEFAULT_BUFLEN;         //23.214.132.132 GoDaddy.com 
    int WSAERROR = WSAGetLastError();         //190.93.243.15 
    //system("color 04");            //172.16.100.114 Mrs.Hall 
    //---------------------- 
    // Initialize Winsock 
    iResult = WSAStartup(MAKEWORD(2,2), &wsaData); 
    if (iResult != NO_ERROR) { 
     printf("WSAStartup failed: %d\n", iResult); 
     return 1; 
    } 

    //---------------------- 
    // Create a SOCKET for connecting to server 
    ConnectSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); 
    if (ConnectSocket == INVALID_SOCKET) { 
     printf("Error at socket(): %i\n", WSAGetLastError()); 
     WSACleanup(); 
     return 1; 
    } 

    //---------------------- 
    // The sockaddr_in structure specifies the address family, 
    // IP address, and port of the server to be connected to. 

    printf("IP ADDRESS: 74.125.196.191 is Google 216.58.208.37 is mail.google.com 129.66.24.10 is iNow\n"); 
    cin >> ipADDRESS; 
    printf("PORT: \n"); 
    cin >> sPORT; 
    //system("color 04"); 
    u_short PORT = strtoul(sPORT, NULL, 0); 
    clientService.sin_family = AF_INET; 
    clientService.sin_addr.s_addr = inet_addr(ipADDRESS);       //74.125.196.191 
    clientService.sin_port = htons(PORT); //135: msrpc, 445: microsoft-ds, 554: rtsp, 1025: NFS-or-IIS, 1026: LSA-or-nterm 
              //1027: IIS, 1028: uknown, 1029: ms-lsa, 139: weird behavior 
    //---------------------- 
    // Connect to server. 
    iResult = connect(ConnectSocket, (SOCKADDR*) &clientService, sizeof(clientService)); 
    if (iResult == SOCKET_ERROR) { 
     closesocket (ConnectSocket); 
     printf("Unable to connect to server: %i\n", WSAGetLastError()); 
     WSACleanup(); 
     return 1; 
    } 

    //---------------------- 
    //Get local host name 
    iResult = gethostname(name, sizeof(name)); 
    if (iResult == NO_ERROR) { 
     printf("Host Name: %s\n", name); 
    } 
    else if (iResult == SOCKET_ERROR) { 
     printf("Could not resolve host name: %i", WSAGetLastError()); 
    } 

    //------------------------ 
    //Get peer name 
    iResult = getpeername(ConnectSocket, (struct sockaddr*)&sName, &sNameSize); 
    if (iResult == NO_ERROR) 
     printf("Peer Name: %s\n", inet_ntoa(sName.sin_addr)); 
    else if (iResult == SOCKET_ERROR) 
     printf("Could not get peer name: %i\n", WSAGetLastError()); 

    //------------------------- 
    // Send an initial buffer 
    iResult = send(ConnectSocket, sendbuf, (int)strlen(sendbuf), 0); 
    if (iResult == SOCKET_ERROR) { 
     printf("send failed: %d\n", WSAGetLastError()); 
     closesocket(ConnectSocket); 
     WSACleanup(); 
     return 1; 
    } 
    else 
     printf("Bytes Sent: %i\n", iResult); 

    //----------------------------- 
    // shutdown the connection since no more data will be sent 
    iResult = shutdown(ConnectSocket, SD_SEND); 
    if (iResult == SOCKET_ERROR) { 
     printf("shutdown failed: %d\n", WSAGetLastError()); 
     closesocket(ConnectSocket); 
     WSACleanup(); 
     return 1; 
    } 

    // Receive until the peer closes the connection 
    do { 

     iResult = recv(ConnectSocket, recvbuf, recvbuflen, 0); 
     if (iResult > 0) { 
      printf("Bytes received: %d\n", iResult); 
      cout << "From Server" << recvbuf << endl;//printf("From server: %s\n", recvbuf); 
     } 
     else if (iResult == 0) 
      printf("Connection closed\n"); 
     else if (WSAERROR == WSAETIMEDOUT) 
      printf("recv failed: WSAETIMEDOUT\n"); 
    } while(iResult > 0); 

    // cleanup 
    closesocket(ConnectSocket); 
    WSACleanup(); 
    system("PAUSE"); 
    return 0; 
} 

int main() { 
     sck(); 
     MessageBox(NULL, "Successful", "Result:", MB_OK); 
} 

這是我的代碼

+0

您能提供您使用的代碼嗎? –

+0

一次只能輸出25行左右的行,並要求用戶按下回車鍵並讀取用戶的輸入。 –

+0

但是,類似的代碼會是什麼樣子?或者至少我需要使用哪些功能? –

回答

0

剛剛意識到我所要做的就是轉到該網頁,並更改cookie什麼,我使用EditThisCookie插件使得它在我的程序,然後複製源。 XD