- 论坛徽章:
- 0
|
socket,send或write时无故死掉,没有任何提示
是一个多路复用的服务器程序,大致流程是这样:
接到一个新请求,accept一个socket
socket读监听,异常监听
可读,读取内容,读完清除读监听,加入写监听
可写,写应答内容,经常就在这里死掉了,没有报错,也不生成core文件,就突然死掉了
下面是写应答的代码:
while(totalsend < nbytes) {
cerr << "totalsend=" << totalsend << ",nbytes=" << nbytes << endl;
dsend = send(sockfd, request + totalsend, nbytes - totalsend,0); //就在这行断掉
cerr << "dsend=" << dsend << endl;
if(dsend==-1) {
fprintf(stderr, "\tsend error!%s\n", strerror(errno));
close_connection(sockno);
return;
//exit(0);
}
totalsend+=dsend;
//fprintf(stdout, "\n\tRequest.%d bytes send OK!\n", totalsend);
} |
|