免费注册 查看新帖 |

Chinaunix

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

segmentation fault问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-01-08 14:47 |只看该作者 |倒序浏览
初学socket,造书写,出现问题。
环境 aix5.2 /c/c++

#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>


#define MYPORT 34900
#define BACKLOG 100
main ()
{
        int sockfd,new_fd;
        struct sockaddr_in my_addr;
        struct sockaddr_in their_addr;
        unsigned long sin_size;
        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,(my_addr.sin_zero));
        if(bind(sockfd,(struct sockaddr*)&my_addr,sizeof(struct sockaddr))==-1){
                perror("bind");
                exit(1);
        }
        if(listen(sockfd,BACKLOG)==-1){
                perror("listen");
                exit(1);
        }
        while(1){
                sin_size=sizeof(struct sockaddr_in);
                if((new_fd=accept(sockfd,(struct sockaddr*)&their_addr,&sin_size))==-1){
                        perror("accept");
                        continue;
                }
                 
                                                                          
                printf("server:got connection from %s\n",inet_ntoa(their_addr.sin_addr));
                if(!fork()){                                             
                        if(send(new_fd,"hello,world!\n",14,0)==-1)
                        perror("send");
                        close(new_fd);
                        exit(0);
                }
                close(new_fd);
                while(waitpid(-1,NULL,WNOHANG)>0);
        }
}



/**
**/

论坛徽章:
0
2 [报告]
发表于 2008-01-08 16:40 |只看该作者
bzero(&my_addr,(my_addr.sin_zero));这个.

你想做的应该是这个:

  1. bzero(&(my_addr.sin_zero), 8);
复制代码

[ 本帖最后由 乱.码 于 2008-1-8 16:48 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2008-01-09 17:45 |只看该作者

回复 #2 乱.码 的帖子

谢谢 ,检查一遍已经明白了。但客户端有问题,另一个帖子
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP