gpt4 book ai didi

c++ - 从Web服务器获取数据并发送给客户端C++

转载 作者:行者123 更新时间:2023-11-28 08:23:25 26 4
gpt4 key购买 nike

我正在尝试从网络服务器作为代理获取一些数据,然后将数据发送给客户端。
Web 服务器 -> 我 -> 客户端

这是我的主要代码:

int main()
{
Initialize();
ServerSocket s;
s.Bind();
s.Listen();
while(true)
{
TCPSocket* sock = s.Accept();

ClientSocket client;
string addr = handle.getAddress();
short prt = handle.getPort();

client.Connect(addr, prt);
char data[5000];
client.Send("GET /index.html HTTP/1.0\r\n\r\n", 28) ;
while(true)
{
int numbytes=client.Recv(data, 5000);
if(numbytes == 0)
{
break;
}
cout <<"Received from web server: " << numbytes << endl;
int numbytes2 = sock->Send(data, numbytes);
cout << "Sent to client: " << numbytes2 << endl;
}
client.Close();
}
s.Close();
return 0;
}

但是当我浏览网络时,比如说 google.com,我得到“302 Moved The document has moved here.”。在每个站点中,我都有不同的行为,但该站点不会加载。我在发送和接收字节时做错了什么吗?提前致谢。

最佳答案

您的代码运行良好。只是现代网络服务器不允许您在未使用用户代理、 header 等正确验证自己的情况下进行连接。请在您的 shell 上尝试以下命令。

telnet yourserver.com 80
<some messages from server>

GET /index.html HTTP/1.0

如果响应与您使用 C++ 程序获得的响应相同,那么基本上您需要做的就是发送更多信息以正确验证您自己。

  user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
headers = {'User-Agent': user_agent}

并将此数据与您的 GET 请求一起发送。

关于c++ - 从Web服务器获取数据并发送给客户端C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4972465/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com