다양한 방법으로 c++로 http에 접근하는 방법이 있는거 같으나, 간단하게 request하고 response 받는 방법이 필요하기에 이해 할 수 있는 범위 내에서 찾아보자.
출처 : https://xn--z92bu70c.kr/87?category=577125
출처 : https://nine01223.tistory.com/270
#define _WINSOCK_DEPRECATED_NO_WARNINGS #include <winsock2.h> #include <windows.h> #include <iostream> #pragma comment(lib, "ws2_32.lib")
using namespace std;
int main() { WSADATA wsaData; if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) { cout << "WSAStartup failed.\n"; system("pause"); return 1; } SOCKET Socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); struct hostent *host; host = gethostbyname("주소소소소"); SOCKADDR_IN SockAddr; SockAddr.sin_port = htons(8080); SockAddr.sin_family = AF_INET; SockAddr.sin_addr.s_addr = *((unsigned long*)host->h_addr); cout << "Connecting...\n"; if (connect(Socket, (SOCKADDR*)(&SockAddr), sizeof(SockAddr)) != 0) { cout << "Could not connect"; system("pause"); return 1; } cout << "Connected.\n"; send(Socket, "GET / HTTP/1.1\r\nHost: 주소소소소:8080/webgameserver/ \r\n\r\n", strlen("GET / HTTP/1.1\r\nHost: 주소소소소:8080/webgameserver/ \r\n\r\n"), 0); char buffer[10000]; int nDataLength; while ((nDataLength = recv(Socket, buffer, 10000, 0)) > 0) { int i = 0; while (buffer[i] >= 32 || buffer[i] == '\n' || buffer[i] == '\r') { cout << buffer[i]; i += 1; } } closesocket(Socket); WSACleanup(); system("pause"); return 0; }
|
뭐지....request 형태가 이상하다고 400 status 오류가 뜨는데...
다른 방법 없을까..
아냐..이것도...내가 원하는 건 아니야/....거의 맞긴한데...