int amservicestart() { pthread_mutex_init(&net_mutex, NULL); seminit(); sockfd = dtcmr_client_creat("127.0.0.1",12580, IPPROTO_TCP); if (sockfd<0){ printf("dtcmr_client_creat is error\n"); return -1; } memset(sddata,2,1024); send_pthread_init(); while(1) { pthread_mutex_lock(&net_mutex); printf("while recv_pack\n"); recv_pack(); pthread_mutex_unlock(&net_mutex); usleep(5000); } }
//默认connect 127.0.0.1 12580 void *client_pthread() { //返回的msg_set序号(用于recv_time_out) cli_serial_num = client_create(); //获取sockfd(用于send) cli_sockfd = get_cli_sockfd(cli_serial_num); if(cli_serial_num < 0) { fprintf(stderr,"client_create failed\n"); return NULL; } fprintf(stderr,"connect success %d\n",cli_serial_num); //设定对于cancel请求的参数 pthread_setcancelstate(PTHREAD_CANCEL_ENABLE,NULL); pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS,NULL); send_pthread_init(); //接收手机端信息(有可能阻塞,由main_pthread调用pthread_cancel结束) while(end_flag == 0) { usleep(1000); if(send_or_recv == 0) { pthread_mutex_lock(&ass_pthread_mutex); fprintf(stderr,"recv_pthread lock\n"); recv_package(); fprintf(stderr,"recv_pthread unlock\n"); pthread_mutex_unlock(&ass_pthread_mutex); send_or_recv = 1; } usleep(4000); } fprintf(stderr,"recv_pthread exit\n"); pthread_exit(NULL); }