我寫過一個服務器,當瀏覽器試圖連接到某些站點時,它會檢查一個黑名單並返回一個404,但是當我調用send()時,沒有錯誤,除非關閉連接,否則不會出現在Web瀏覽器上?C socket編程,發送
有什麼建議嗎?從瀏覽器
接受連接
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");
}
}
檢查第42行,你是指「我」而不是「j」。 – 2012-02-26 23:55:36
我已經添加了一些代碼,對不起 – drunkmonkey 2012-02-27 00:01:51
不應該每個線程都得到自己的'connfd'副本嗎?它看起來像你的代碼,他們都共享相同的變量。 – 2012-02-27 00:07:18