#define _CRT_SECURE_NO_WARNINGS #include #include #include #pragma comment(lib, "ws2_32.lib") #define BUFFER_SIZE 4096 // バッファサイズを増やす int main() { // 初期化 WSADATA wsaData; if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) { fprintf(stderr, "WSAStartup failed\n"); return 1; } // サーバーの情報 const char* serverHost = "www5e.biglobe.ne.jp"; const char* serverPort = "80"; const char* resource = "/~develop/c/CharIsNumber.c"; // HTTPリクエストの生成 char request[256]; sprintf(request, "GET %s HTTP/1.1\r\nHost: %s\r\nConnection: close\r\n\r\n", resource, serverHost); // サーバーアドレスの解決 struct addrinfo hints, * result; memset(&hints, 0, sizeof(hints)); hints.ai_family = AF_UNSPEC; hints.ai_socktype = SOCK_STREAM; if (getaddrinfo(serverHost, serverPort, &hints, &result) != 0) { fprintf(stderr, "getaddrinfo failed\n"); WSACleanup(); return 1; } // ソケットの作成 SOCKET clientSocket = socket(result->ai_family, result->ai_socktype, result->ai_protocol); if (clientSocket == INVALID_SOCKET) { fprintf(stderr, "socket creation failed\n"); freeaddrinfo(result); WSACleanup(); return 1; } // サーバーに接続 if (connect(clientSocket, result->ai_addr, (int)result->ai_addrlen) == SOCKET_ERROR) { fprintf(stderr, "connection failed\n"); closesocket(clientSocket); freeaddrinfo(result); WSACleanup(); return 1; } // HTTPリクエストの送信 send(clientSocket, request, (int)strlen(request), 0); // レスポンスの受信と表示 char buffer[BUFFER_SIZE]; int bytesRead; while ((bytesRead = recv(clientSocket, buffer, BUFFER_SIZE - 1, 0)) > 0) { buffer[bytesRead] = '\0'; // UTF-8エンコーディングでデータを表示 printf("%s", buffer); } // 後始末 closesocket(clientSocket); freeaddrinfo(result); WSACleanup(); return 0; }