当前位置: 技术问答>linux和unix
socket 非阻塞 出错
来源: 互联网 发布时间:2016-10-13
本文导语: 部分代码 pclient->socket = socket(AF_INET,SOCK_STREAM,0); pclient->_addr.sin_family = AF_INET; pclient->_addr.sin_port = htons(pclient->remote_port); pclient->_addr.sin_addr = *((struct in_addr *)he->h_addr); if(pclient->socket == -1){ return -1; ...
部分代码
pclient->socket = socket(AF_INET,SOCK_STREAM,0);
pclient->_addr.sin_family = AF_INET;
pclient->_addr.sin_port = htons(pclient->remote_port);
pclient->_addr.sin_addr = *((struct in_addr *)he->h_addr);
if(pclient->socket == -1){
return -1;
}
flags=fcntl(pclient->socket,F_GETFL,0);client_recv(pclient,&lpbuf,0) socket,F_SETFL,flags| O_NONBLOCK);
把最后2行注释 后,程序运行后向服务器发消息,能正常接收到回的信息 ,不注释程序直接终止运行 报错
error
*** glibc detected *** ./main: free()csi enable mclk
: invalid pointer: 0xbe972658 **prp_enc_disable
*
Aborted
应该如何设置成非阻塞模式呢?
pclient->socket = socket(AF_INET,SOCK_STREAM,0);
pclient->_addr.sin_family = AF_INET;
pclient->_addr.sin_port = htons(pclient->remote_port);
pclient->_addr.sin_addr = *((struct in_addr *)he->h_addr);
if(pclient->socket == -1){
return -1;
}
flags=fcntl(pclient->socket,F_GETFL,0);client_recv(pclient,&lpbuf,0) socket,F_SETFL,flags| O_NONBLOCK);
把最后2行注释 后,程序运行后向服务器发消息,能正常接收到回的信息 ,不注释程序直接终止运行 报错
error
*** glibc detected *** ./main: free()csi enable mclk
: invalid pointer: 0xbe972658 **prp_enc_disable
*
Aborted
应该如何设置成非阻塞模式呢?
|
设置为非阻塞的语句本身没有问题
只是设置为非阻塞以后,如果信息不是立即可用,接收操作肯定失败了..
只是设置为非阻塞以后,如果信息不是立即可用,接收操作肯定失败了..
|
在read的时候出错了