브라우저가 특정 사이트에 연결을 시도 할 때 블랙리스트를 확인하고 404를 되돌려 보낼 때 서버를 작성했습니다. 그러나 send()를 호출하면 오류는 발생하지 않지만 메시지는 않습니다. 연결을 끊지 않으면 웹 브라우저에 나타나지 않습니까?C 소켓 프로그래밍, 보내기
어떤 조언이 필요합니까?
while(1){
connfd = accept(fd, (struct sockaddr *) &cliaddr, &cliaddrlen);
if (connfd == -1) {
perror ("unable to accept");
return 1;
}
printf("%s:%d connected\n", inet_ntoa(cliaddr.sin_addr), ntohs(cliaddr.sin_port));
printf("%d",threadIndex);
pthread_create(&(thread[threadIndex++]), NULL, processRequests, (void *)connfd);
}
요청을 처리 방법은 보내는 브라우저에서
수락 연결 니펫을 :
if(blacklisted ==1){
printf("is blacklisted\n");
char *response404 = "HTTP:/1.1 404 not avaliable\r\n\r\n";
printf("%s\n",response404);
int len, bytes_sent;
len = strlen(response404);
bytes_sent = send(connfd, response404, len, 0);
if(len != bytes_sent){
perror("message length doesn't match");
}
}
'j'보다는'i'를 의미하는지 42 행에서 확인하십시오. –
일부 코드를 추가했습니다. 죄송합니다. – drunkmonkey
각 스레드가 자신의 복사본 인'connfd'를 가져 오지 않아야합니까? 코드에서 모두 같은 변수를 공유하는 것처럼 보입니다. –