首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

socket 编程,怎么知道程序错误退出的原因

2013-08-09 
socket 编程,如何知道程序异常退出的原因?int portnum 0cfd socket(AF_INET, SOCK_STREAM, 0)if(-1

socket 编程,如何知道程序异常退出的原因?


    int portnum = 0;
    cfd = socket(AF_INET, SOCK_STREAM, 0);
    if(-1 == cfd)
    {
printf("socket fail ! \r\n");
return -1;
    }
    printf("socket ok !\r\n");
    bzero(&s_add,sizeof(struct sockaddr_in));
    s_add.sin_family=AF_INET;
    inet_pton(AF_INET, "", &s_add.sin_addr);
    s_add.sin_port=htons(portnum);

    if(-1 == connect(cfd,(struct sockaddr *)(&s_add), sizeof(struct sockaddr)))
    {
printf("connect fail !\r\n");
return -1;
    }


这里我把server ip 设置 为空,port 设置 为0 。进行connect连接的时候,程序会异常退出。

理论上程序退出应该是系统给发进程发了某个信号。 有什么办法知道系统发送的是什么信号么?
这样就可以处理这个信号,而使程序不退出。

谢谢 socket 异常 connect 信号
[解决办法]

 70     clientaddr.sin_addr.s_addr = inet_addr("");
 71     clientaddr.sin_port = htons(0);
 72 
 73     if( connect(cli_sock, (struct sockaddr *)&clientaddr, sizeof(sockaddr_in)) < 0 )
 74     {
 75         perror("connect");
 76         return -1;
 77     }
 78     



结果:

connect: Network is unreachable

 startclieprocess failed!


程序没有异常中断的!你的可能是编译器作了优化吧!
这个情况connect函数会处理的,
Network is unreachable

热点排行