我写过一个服务器,当浏览器试图连接到某些站点时,它会检查一个黑名单并返回一个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