Одні балачки. Дивно.
Тут потрібен простий сервер, простий клієнт - на це дуже багато матеріалу в інтернеті.
Посилання на російський сайт
https://code-live.ru/post/cpp-http-server-over-sockets/
Краще не знайдете, все розписано максимально.
Автор написав код в багато рядків, тому здається, що коду багато. Насправді, його менше.
Далі, як підключити бібліотеку:
В Dev-Cpp
Не працює. Це працює в білдері і в студіо.
Для Dev-Cpp
має бути створений проект,
Проект - Параметри Проекту - Параметри - Додати бібліотеку - (Перейти в папку, де встановлений Dev-Cpp, перейти MinGW64/x86_64-w64-mingw32/lib32/) - Вибрати libws2_32.a - Гаразд.
Код клієнта
Завантажує сторінку Google. Для обміну повідомленнями даний клієнт не потрібен, потрібно 2 сервера. Це так, інтересно
#include <string.h>
#include <winsock2.h>
#include <windows.h>
#include <iostream>
#include <vector>
#include <locale>
#include <sstream>
using namespace std;
#pragma comment(lib,"ws2_32.lib")
//Для Dev-Cpp метод вище
int main( void ){
WSADATA wsaData;
SOCKET Socket;
SOCKADDR_IN SockAddr;
struct hostent *host;
char buffer[10000];
int nDataLength;
string website_HTML;
// website url
string url = "www.google.com";
//HTTP GET
string get_http = "GET / HTTP/1.1\r\nHost: " + url + "\r\nConnection: close\r\n\r\n";
if (WSAStartup(MAKEWORD(2,2), &wsaData) != 0){
cout << "WSAStartup failed.\n";
system("pause");
//return 1;
}
Socket=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
host = gethostbyname(url.c_str());
SockAddr.sin_port=htons(80);
SockAddr.sin_family=AF_INET;
SockAddr.sin_addr.s_addr = *((unsigned long*)host->h_addr);
if(connect(Socket,(SOCKADDR*)(&SockAddr),sizeof(SockAddr)) != 0){
cout << "Could not connect";
system("pause");
//return 1;
}
// send GET / HTTP
send(Socket,get_http.c_str(), strlen(get_http.c_str()),0 );
// recieve html
while ((nDataLength = recv(Socket,buffer,10000,0)) > 0){
int i = 0;
while (buffer[i] >= 32 || buffer[i] == '\n' || buffer[i] == '\r'){
website_HTML+=buffer[i];
i += 1;
}
}
closesocket(Socket);
WSACleanup();
// Display HTML source
cout<<website_HTML;
// pause
cout<<"\n\nPress ANY key to close.\n\n";
cin.ignore(); cin.get();
return 0;
}