내 코드가 웹 사이트에 HTTP HEAD 요청을 보냅니다. 그런 다음 웹 사이트는 해당 정보로 응답합니다. 답장의 첫 줄에서 상태 코드를 어떻게 추출 할 수 있습니까? 상태 코드는 "HTTP/1.0"다음의 값으로 2xx 또는 3xx입니다.C - char 버퍼에서 숫자를 추출하려면 어떻게해야합니까?
코드 :
#define BUF_LEN 2048
main(int argc, char *argv[])
{
int csd;
struct sockaddr_in server;
struct hostent *server_host;
int server_len;
int string_size;
short server_port;
char req_buffer[BUF_LEN];
char temp_buffer[BUF_LEN];
char receiveBuffer[BUF_LEN];
char resource_buffer[BUF_LEN];
int t;
if(argc!=2)
{
fprintf(stderr,"Usage: %s <website> \n",argv[0]);
exit(EXIT_FAILURE);
}
server_host=gethostbyname(argv[1]);
if (server_host == NULL)
{
herror("While calling gethostbyname()");
exit(EXIT_FAILURE);
}
csd=socket(PF_INET, SOCK_STREAM, 0);
if(csd<0)
{
perror("While calling socket()");
exit(EXIT_FAILURE);
}
server.sin_family=AF_INET;
memcpy(&server.sin_addr, server_host->h_addr_list[0], server_host->h_length);
server.sin_port = htons(80);
server_len=sizeof(server);
t = connect(csd, (struct sockaddr *) &server, server_len);
if (t<0)
{
perror("while connecting()");
exit(EXIT_FAILURE);
}
else
{
printf("connected to server\n\n");
}
sprintf(temp_buffer, "HEAD/HTTP/1.0\r\n");
strcpy(req_buffer, temp_buffer);
sprintf(temp_buffer, "HOST: %s\r\n", argv[1]);
strcat(req_buffer, temp_buffer);
sprintf(temp_buffer, "\r\n");
strcat(req_buffer, temp_buffer);
printf(req_buffer);
write(csd, req_buffer, strlen(req_buffer));
read(csd, receiveBuffer, BUF_LEN);
printf(receiveBuffer);
close(csd);
}
사서를 쓰지 않는 이유 y [libcurl] (https://curl.haxx.se/libcurl/)을 좋아합니까? –
@SanderDeDycker 내 대답에 곱슬 머리를 사용하려고 시도해주세요. –