【问题标题】:How do I make cout stop outputting text after the page is full?页面已满后如何让 cout 停止输出文本?
【发布时间】:2015-09-06 19:09:18
【问题描述】:

我使用 winsock2 制作了一个简单的 Web 浏览器,我让它 cout 来自服务器的响应,但它发送总和 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);
}

这是我的代码

【问题讨论】:

  • 你能提供你正在使用的代码吗?
  • 一次只输出25行左右,并要求用户回车并读取用户的输入。
  • 但是这样的代码会是什么样子呢?或者至少我需要使用哪些功能?

标签: html c++ cout


【解决方案1】:

刚刚意识到我所要做的就是访问网页并将 cookie 更改为我使用 EditThisCookie 插件在我的程序中创建的内容,然后复制源代码。 XD

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-18
    • 1970-01-01
    • 2013-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多