>> Edit article
이름
제목
패스워드
안녕하세요. accept 와 fork 와 sockfd 값의 관계가 좀 이상하네요.. 제가 생각하는 게 맞다면 하나의 클라이언트가 접속하게 되면 여러개의 프로세스가 fork() 되면서 같은 sockfd(accept된것)에 send 하게 되니 당연히 잘못된 fd라고 나 오지 않나요? : #include <stdio.h> : #include <stdlib.h> : #include <errno.h> : #include <string.h> : #include <sys/types.h> : #include <netinet/in.h> : #include <sys/socket.h> : #include <sys/wait.h> : #include <mysql.h> : : #define MYPORT 2002 : #define BACKLOG 10 : : main() : { : int sockfd, new_fd; : struct sockaddr_in my_addr; : struct sockaddr_in their_addr; : int sin_size; : : MYSQL mysql; : MYSQL_RES *res; : MYSQL_ROW row; : int fields; : int cnt; : char *query; : : if((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1){ : perror("socket"); : exit(1); : } : : my_addr.sin_family = AF_INET; : my_addr.sin_port = htons(MYPORT); : my_addr.sin_addr.s_addr = INADDR_ANY; : bzero(&(my_addr.sin_zero), 8); : : if(bind(sockfd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr)) == -1){ : perror("bind"); : exit(1); : } : : if(listen(sockfd, BACKLOG) == -1) { : perror("listen"); : exit(1); : } : : mysql_init(&mysql); : : if(!mysql_real_connect(&mysql,"localhost","kimh81","*****","kimh81",0,(char *)NULL, 0)) : { : printf("error no: %d%s", mysql_errno(&mysql), mysql_error(&mysql)); : exit(1); : } : : query = "SELECT * FROM bbs_se"; : if(mysql_real_query (&mysql, query, strlen(query))) : { : printf("error no: %d%s", mysql_errno(&mysql), mysql_error(&mysql)); : exit(1); : } : : res = mysql_store_result(&mysql); : fields = mysql_field_count(&mysql); : : while(1){ : sin_size = sizeof(struct sockaddr_in); : if ((new_fd = accept(sockfd, (struct sockaddr *)&their_addr, &sin_size)) == -1){ : perror("accept"); : continue; : } : : while((row = mysql_fetch_row(res))) : { : for(cnt = 0; cnt < fields; ++cnt) : : if(!fork()){ : if(send(new_fd, row[cnt], 0, 0) == -1) : perror("send"); : close(new_fd); : exit(0); : } : close(new_fd); : } : : mysql_free_result(res); : mysql_close(&mysql); : : while(waitpid(-1, NULL, WNOHANG) > 0); : } : } : : 이따구루다가.. 코딩했습니다. : : 이렇게 해서 서버에 오려놓구.. : : 클라이언트로 접속하면 후후.. : : 서버에 잘못된파일기술자라고 하면서 에러가 죽~~~ 나오네용 ㅡ,.ㅡ;; : : mysql에서 나온 값을 어떻게 클라이언트로 전송해야하죠? 웅? : : -- : 윽~ 똥발바따~ ㅜ.ㅜ -- return true
Copyleft
1999-2026 by
JSBoard Open Project
Theme Designed by
IDOO
All right reserved