/* Compiled with VS2010 on Windows 7. */ #include #include #include #include #pragma comment (lib, "Ws2_32.lib") #pragma comment (lib, "Mswsock.lib") #pragma comment (lib, "AdvApi32.lib") int main() { WSADATA wsaData; int result; SOCKET client_fd = INVALID_SOCKET; struct sockaddr_in server_address; unsigned int PORT = 7000; const int HTTP_RESPONSE_LEN = 1000; char http_response[1000]; struct timeval period; fd_set rfds; result = WSAStartup(MAKEWORD(2,2), &wsaData); if (result != 0) { fprintf(stderr, "main(): error calling 'WSAStartup()'"); WSACleanup(); exit(EXIT_FAILURE); } // set the host manually server_address.sin_family = AF_INET; server_address.sin_port = htons(PORT); if (inet_pton(AF_INET, "94.189.255.75", &(server_address.sin_addr)) <= 0) { fprintf(stderr, "main(): error calling 'inet_pton()'\n"); WSACleanup(); exit(EXIT_FAILURE); } memset(&(server_address.sin_zero), '\0', 8); // create socket and connect client_fd = socket(PF_INET, SOCK_STREAM, 0); if (client_fd == INVALID_SOCKET) { fprintf(stderr, "main(): cannot create socket\n"); WSACleanup(); exit(EXIT_FAILURE); } if (connect(client_fd, (struct sockaddr*)(&server_address), (socklen_t)sizeof(server_address)) == SOCKET_ERROR) { fprintf(stderr, "main(): cannot connect to server\n"); WSACleanup(); exit(EXIT_FAILURE); } // talk with server period.tv_sec = 5; period.tv_usec = 0; FD_ZERO(&rfds); FD_SET(client_fd, &rfds); result = select(100, &rfds, NULL, NULL, &period); if (result == 0) fprintf(stderr, "main(): time expired"); else { memset(http_response, '\0', HTTP_RESPONSE_LEN); if (recv(client_fd, http_response, HTTP_RESPONSE_LEN - 1, 0) == SOCKET_ERROR) { fprintf(stderr, "main(): cannot receive response\n"); WSACleanup(); exit(EXIT_FAILURE); } http_response[HTTP_RESPONSE_LEN - 1] = '\0'; printf("main(): http_response=%s\n", http_response); } closesocket(client_fd); WSACleanup(); return EXIT_SUCCESS; }