免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1564 | 回复: 3
打印 上一主题 下一主题

[C] 程序出错,求解,大侠帮忙. [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-03-24 15:38 |只看该作者 |倒序浏览
int main(void)
    282 {
    283         int i,sd1,connsd;
    284         socklen_t clientaddr_len,myaddr_len;
    285         struct sockaddr_in myaddr,clientaddr;
    286         TASK_MORE chos;
    287         pthread_t brast_pid;
    288          SER_THREAD_ARG arg[PROGRAM_NUM];
    289         pthread_t pid[PROGRAM_NUM],manage_pid;
    290         char ipv4[15];
    291
    292         bzero(&chos,sizeof(chos));
    293
    294         /*create a thread to broadcast*/
    295         pthread_create(&brast_pid,NULL,broadcast,NULL);
    296         pthread_detach(brast_pid);
    297         sd1 = socket(AF_INET,SOCK_STREAM,0);
    298         if(sd1 == -1){
    299                 perror("socket()");
    300                 exit(1);
    301         }
    302         myaddr.sin_family = AF_INET;
    303         myaddr.sin_port = htons(PORT1);
    304         inet_pton(AF_INET,"0.0.0.0",&myaddr.sin_addr);
    305
    306         myaddr_len = sizeof(myaddr);
    307
    308         if(bind(sd1,(struct sockaddr *)&myaddr,myaddr_len) < 0){
    309                 perror(0);
    310                 exit(1);
    311         }
    312
    313         listen(sd1,256);
    314         while(1){
    315                 clientaddr_len = sizeof(clientaddr);
    316                 connsd = accept(sd1,(struct sockaddr *)&clientaddr,&clientaddr_len);
    317 printf("12345\n");
    318                 if(connsd < 0){
    319                         perror("accept()");
    320                         exit(1);
    321                 }
    322                 inet_ntop(AF_INET, &clientaddr.sin_addr, ipv4, 15);
    323                 printf("\n##### Connect form IP:%s Port:%d #####\n",ipv4,ntohs(clientaddr.sin_port));
    324                 if(recv(connsd,&chos,sizeof(chos),0) < 0){
    325                         perror("recv()");
    326                         exit(1);
    327                 }
    328 //            if(chos.dload_flag.flag == EXIT)
    329 //                      continue;
    330
    331                 send_ensure_sigle(connsd,0);
    332
    333                 WAIT_THREAD_EXIT wait;
    334                 wait.threadnum = chos.task_num;
    335                 wait.close_sock = connsd;
    336                 for(i = 0;i <= chos.task_num;i++){
    337                         arg.sockfd = connsd;
    338                         memcpy(&arg.client_chose_msg,&chos.task,sizeof(CLIENT_TO_SERVER));
    339                         pthread_create(&pid,NULL,ready_send_it,&arg);
    340                 }
    341                 for(i = 0;i <= wait.threadnum;i++){
    342                         wait.all_pid = pid;
    343                 }
    344                 pthread_create(&manage_pid,NULL,wait_send_over,(void *)&wait);
    345                 pthread_detach(manage_pid);
    346                 signal(SIGPIPE,SIG_IGN);
    347         }
    348         pthread_mutex_destroy(&job_mutex);
    349         exit(0);
    350 }

标颜色位置出现段错误,不知何故。忘指导。

论坛徽章:
0
2 [报告]
发表于 2011-03-24 16:44 |只看该作者
listen最大是255吧

论坛徽章:
0
3 [报告]
发表于 2011-03-24 19:42 |只看该作者
编译错误? 运行错误?

论坛徽章:
0
4 [报告]
发表于 2011-03-24 20:01 |只看该作者
gdb xxx core.xxx
bt
info local
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP