C++ 如何正确获取c++;访问web浏览器的服务器代码?

C++ 如何正确获取c++;访问web浏览器的服务器代码?,c++,C++,下面是我处理该消息的代码,但由于某些原因,我一直收到一条消息,消息后面是“连接到套接字时出现问题!抱歉!!”,然后是此GET消息: 服务器说: GET/HTTP/1.1 主机:006010fb-d2cb-4a56-9e26-21bf35548134.id.ReplitureContent.com 用户代理:Mozilla/5.0(Windows NT 10.0;Win64;x64)AppleWebKit/537.36(KHTML,类似Gecko)Chrome/88.0.4324.190 Safa

下面是我处理该消息的代码,但由于某些原因,我一直收到一条消息,消息后面是“连接到套接字时出现问题!抱歉!!”,然后是此GET消息:

服务器说:
GET/HTTP/1.1
主机:006010fb-d2cb-4a56-9e26-21bf35548134.id.ReplitureContent.com
用户代理:Mozilla/5.0(Windows NT 10.0;Win64;x64)AppleWebKit/537.36(KHTML,类似Gecko)Chrome/88.0.4324.190 Safari/537.36
接受:text/html、application/xhtml+xml、apP�s� 
谁能看一下这个,告诉我我错过了什么/做错了什么?这是我第一次做服务器/客户端编码

/**
*@程序的主要功能。这就是所谓的“程序”,
*其中表示Web服务器的地址,是要显示的消息
* 
*@param argc参数数
*@param argv指向参数的指针
*@return int 0如果一切正常
*/
//基本TCP客户端:套接字()创建>连接()>接收()>显示>关闭
#包含//标准库
#包含//标准库
#包括//API和套接字的定义
#包含//更多定义
#包含//结构以存储地址信息
#include//close函数
#包括
#定义端口8080
int main()
{
char tcp\u服务器\u消息[256]=“你好,我是您成功连接到的tcp服务器!!\n\n再见!!!\n\n”;
//创建服务器套接字
int tcp_server_socket;//套接字描述符的变量
tcp_server_socket=socket(AF_INET,SOCK_STREAM,0);//调用socket函数。参数:套接字的域(本例中为Internet)、套接字流的类型(tcp)、协议(默认值,tcp为0)
//创建TCP套接字
int tcp_客户端_套接字;//套接字描述符
tcp_client_socket=socket(AF_INET,SOCK_STREAM,0);//调用套接字函数-args:socket域,套接字流类型,tcp协议(默认)
//指定远程套接字的地址和端口
tcp_服务器_地址中的struct sockaddr_;//声明地址的结构
tcp\u server\u address.sin\u family=AF\u INET;//结构字段的定义:设置客户端将连接到的地址的地址族
tcp_server_address.sin_port=htons(port);//指定并传递要连接的端口号-按正确的网络字节顺序转换
tcp_server_address.sin_addr.s_addr=INADDR_ANY;//连接到0.0.0.0
//将套接字绑定到IP地址和端口
绑定(tcp_服务器_套接字,(struct sockaddr*)&tcp_服务器_地址,sizeof(tcp_服务器_地址));//参数:哪个套接字,为服务器地址强制转换,其大小
//监听同步连接
侦听(tcp_服务器_套接字,5);//哪个套接字,有多少个连接
//用于与客户端交互的服务器套接字,结构与以前类似-如果您知道-否则本地连接为空
tcp_客户端_套接字=接受(tcp_服务器_套接字,NULL,NULL);
//发送数据流
发送(tcp_客户端_套接字、tcp_服务器_消息、strlen(tcp_服务器_消息)、0);//发送何处、何处、多少标记(可选)
//连接到远程套接字
int connection_status=connect(tcp_client_socket,(struct sockaddr*)和tcp_server_address,sizeof(tcp_server_address));//参数:哪个套接字,将地址转换为特定结构类型,地址大小
如果(连接状态==-1)
{//返回值0表示一切正常,-1表示有问题
printf(“连接到套接字时出现问题!抱歉!!\n”);
}
字符tcp_服务器_响应[256];
recv(tcp_客户端_套接字,&tcp_服务器_响应,sizeof(tcp_服务器_响应),0);//参数:where(套接字),what(字符串),服务器响应的大小,标志(0)
//从服务器接收的输出
printf(“\n\n服务器说:%s\n”,tcp\u服务器\u响应);
//合上插座
关闭(tcp_客户端_套接字);
返回0;
}
run.bash

#/bin/bash
#不要修改此文件
#此脚本编译并运行Web服务器。
C++ +O SRC/ServMeSeRC/MIN
src/serveMessage 8080“我们将在午夜会面”

您忘记绑定客户端套接字<代码>tcp_客户端_套接字已使用
套接字()初始化,但尚未绑定。通常,您绑定到0 IP和0端口以进行出站,而HTTP没有另行说明,因此这就是您要做的。

您需要将程序分为服务器部分和客户端部分。首先执行服务器程序,并使其侦听客户端的访问。然后执行客户端程序。这是服务器部分(server.cpp)


所以,请检查errno。为什么使用C++?看起来像C代码。@ KAMILUK:他运行它通过C++编译器,因此它是C++代码。有很多共同之处,大多数C代码可以直接通过C++编译程序。PhillipBurt:不,创建一个新的客户端sockaddr进行绑定。你已经知道如何绑定了。
    :
    :
int main()
{
    char tcp_server_message[256] = " Hello, I am the TCP Server you successfully connected to!! \n\n               Bye Bye!!!\n\n";
    
    //create the server socket
    int tcp_server_socket;                                  //variable for the socket descriptor
    tcp_server_socket = socket(AF_INET, SOCK_STREAM, 0);    //calling the socket function. Params: Domain of the socket (Internet in this case), type of socket stream (TCP), Protocol (default, 0 for TCP)

    //creating the TCP socket
    int tcp_client_socket;                                    //Socket descriptor
    //tcp_client_socket = socket(AF_INET, SOCK_STREAM, 0);      //Calling the socket function - args: socket domain, socket stream type, TCP protocol (default)

    //specify address and port of the remote socket
    struct sockaddr_in tcp_server_address;             //declaring a structure for the address
    tcp_server_address.sin_family = AF_INET;           //Structure Fields' definition: Sets the address family of the address the client would connect to
    tcp_server_address.sin_port = htons(PORT);        //Specify and pass the port number to connect - converting in right network byte order
    tcp_server_address.sin_addr.s_addr = INADDR_ANY;   //Connecting to 0.0.0.0
             

    // binding the socket to the IP address and 
    //Params: which socket, cast for server address, its size        
    if (bind(tcp_server_socket, (struct sockaddr *) &tcp_server_address, sizeof(tcp_server_address)) < 0)
    {
        printf("Error binding\n");
    } 
    else
    {
        printf("Bind successfully!\n");
    }

    //listen for simultaneous connections
    if(listen(tcp_server_socket, 5) < 0) {      // listen for incoming connections
        printf("Error listening\n");
    }    
    else
    {
        printf("Success in listening\n");
    }

    // server socket to interact with client, structure like before - if you know - else NULL for local connection
    if((tcp_client_socket=accept(tcp_server_socket, NULL, NULL)) < 0) { // accept one
        printf("Error accepting\n");
    }    
    else
    {
        printf("Success in accepting\n");
        //send data stream
        send(tcp_client_socket, tcp_server_message, strlen(tcp_server_message), 0);  // send where, what, how much, flags (optional)            
    }
 
    //closing the socket
    close(tcp_server_socket);

    return 0;
}
:
:

int main()
{
    //creating the TCP socket
    int tcp_client_socket;                                    //Socket descriptor
    tcp_client_socket = socket(AF_INET, SOCK_STREAM, 0);      //Calling the socket function - args: socket domain, socket stream type, TCP protocol (default)

    //specify address and port of the remote socket
    struct sockaddr_in tcp_server_address;             //declaring a structure for the address
    tcp_server_address.sin_family = AF_INET;           //Structure Fields' definition: Sets the address family of the address the client would connect to
    tcp_server_address.sin_port = htons(PORT);        //Specify and pass the port number to connect - converting in right network byte order
    tcp_server_address.sin_addr.s_addr = INADDR_ANY;   //Connecting to 0.0.0.0
             
    //connecting to the remote socket
    int connection_status = connect(tcp_client_socket, (struct sockaddr *) &tcp_server_address, sizeof(tcp_server_address)); //params: which socket, cast for address to the specific structure type, size of address
    if (connection_status == -1)
    {   //return value of 0 means all okay, -1 means a problem
        printf(" Problem connecting to the socket! Sorry!! \n");
    }
    else
    {
        char tcp_server_response[256];
        recv(tcp_client_socket, &tcp_server_response, sizeof(tcp_server_response), 0);   // params: where (socket), what (string), how much - size of the server response, flags (0)

        //Output, as received from Server
        printf("\n\n Server says: %s \n", tcp_server_response);
    }    
 
    //closing the socket
    close(tcp_client_socket);

    return 0;
}