读书人

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

发布时间: 2013-08-09 15:16:24 作者: rapoo

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

读书人网 >C语言

热点推荐