57    while(1) {

     58     clnt_addr_size = sizeof(clnt_addr);

     59     clnt_sock = accept(serv_sock, (struct sockaddr*)&clnt_addr, &clnt_addr_size);

     60     if( clnt_sock == -1)

     61         error_handling("accept() error");

     62 

     63     printf("새로운 클라이언트가 입장하였습니다. IP : %s \n", inet_ntoa(clnt_addr.sin_addr));

     64 

     65     pthread_mutex_lock(&mutx);

     66     clnt_socks[clnt_number] = clnt_sock;

     67     clnt_number++;

     68     pthread_mutex_unlock(&mutx);

     69 

     70 

     71     pthread_create(&clnt_thread,NULL, clnt_handling, (void *)clnt_sock);

     72 

     73     }

     74 

     75 

     76    return 0;

     77 }


이게 서버 에서 클라이언트 받는 코드이고


void* send_message (void* arg)

     71 {

     72    int serv_sock = (int) arg;

     73    char message[BUFSIZE];

     74 

     75    while(1) {

     76         memset(message, 0, sizeof(message));

     77         fgets(message, BUFSIZE, stdin);

     78         if(!strcmp(message, "q\n")) {

     79                 close(serv_sock);

     80                 exit(0);

     81         }

     82         write(serv_sock, message, strlen(message));

     83         fflush(stdin);

     84         printf("보내기 확인\n");

     85     }

     86 

     87 }

     88 

     89 void* recv_message (void* arg)

     90  {

     91   int serv_sock = (int) arg;

     92   char message[BUFSIZE + NAMESIZE];

     93   int str_len; 

     94   printf("recv_message 입장\n");

     95   

     96     while(1) {

     97      memset(message, 0, sizeof(message));

     98      str_len = read(serv_sock, message, BUFSIZE);

     99      if(str_len = -1) return (void *)1; 

    100      message[str_len] = 0;

    101      fputs("받기 확인\n",stdout);

이게 클라이언트에서 쓰레드 두개생성해서 하나는 보내느걸로하고 하나는 받는걸로했거든?


근데 문제가  두개가있는데;;

하나는  클라이언트가 접속하고 q를 눌러서 나가면 서버도 같이 꺼진다는거;;

그리고  클라이언트 2개가 들어갔을때 서버쪽에서 받는건 되는데 

받은걸 모든 클라이언트한테 뿌려줬는데 클라이언트 쪽에서 받는게 안돌아간다 ㅠㅠ