- 论坛徽章:
- 0
|
as400向aix发送数据,用send,而aix端用recv来接收,但是当发送数据到一定量的时候,as400端出现“Interrupted function call”和“Descriptor not valid”错误,errno应该是EINTR 。但是这种情况对于同样的数据不是每次都出现,时有时无。as400端的程序使用C写的,部分代码如下:
rc = send(sdn, sndbuf+sum, BUF_LEN, 0)
{
if(rc <= 0)
{
ErrMsg(ERRMSG204); /*这个函数是向sysopr发送msg*/
close(sdn);
return(-1)
}
}
用strerror(errno)查出来的信息是“Interrupted function call”和“Descriptor not valid”
因为我不是专门搞通讯编程的,所以对socket不是很了解,Google了一下,发现很多人说是因为,阻塞模式下,收到信号就会产生EINTR,处理是收到该信号时,忽略该信号,重新发送该数据包。但是因为这一部分程序比较底层,不敢随便改,改了以后怕出现数据发送问题,所以想问明白了,哪位仁兄能帮我解释一下啊。另外有没有可能是aix那端的问题,谢谢了
对了,补充一下,aix端同时出错,不过错误是这样的,recv收到的字节是0,并且errno的值也是0
[ 本帖最后由 shaun_dayie 于 2009-4-8 09:01 编辑 ] |
|