Linux Java套接字revc错误:EINTR

Linux Java套接字revc错误:EINTR,linux,sockets,recv,systemc,eintr,Linux,Sockets,Recv,Systemc,Eintr,我在Linux机器上工作,使用Java套接字在具有SystemC模型的虚拟环境之间进行通信 当使用recv函数接收数据时,我有一个错误报告4:EINTR 我试图增加超时时间,但仍然存在错误。此信号中断错误是否有其他可能的原因 客户端套接字与Jmonkey平台连接以接收视频帧 客户端套接字如下: 创建套接字并将其连接到 sock = socket(AF_INET, SOCK_STREAM, 0); if (connect(sock,(const sockaddr*)address

我在Linux机器上工作,使用Java套接字在具有SystemC模型的虚拟环境之间进行通信

当使用recv函数接收数据时,我有一个错误报告4:EINTR

我试图增加超时时间,但仍然存在错误。此信号中断错误是否有其他可能的原因


客户端套接字与Jmonkey平台连接以接收视频帧

客户端套接字如下:

创建套接字并将其连接到

    sock = socket(AF_INET, SOCK_STREAM, 0);
    if (connect(sock,(const sockaddr*)address,sizeof(ADDR)) < 0){
        close(sock);
        SOCKERR("failed to connect socket ("<<errno<<")")
        return false;
    }
    int result = setsockopt(sock,IPPROTO_TCP,TCP_NODELAY,(char *) &flag, sizeof(int));
sock=socket(AF\u INET,sock\u STREAM,0);
if(connect(sock,(const sockaddr*)地址,sizeof(ADDR))<0){
关闭(袜子);

SOCKERR(“无法连接套接字(”只需再次呼叫recv。这没什么大不了的。这与超时无关。我尝试再次呼叫recv,它可以在多次尝试后接收数据。但随着软件运行,尝试次数大幅增加到20…30…这降低了我的模拟速度。有没有可能的原因造成这种中断?如何消除它们?@yong你几乎没有给我们任何信息,但你想让我们告诉你为什么会有中断?你认为我们会如何解决?如果你真的需要帮助,请创建一个复制问题的最小程序并发布该代码。@xaxxon非常感谢你指出我的问题来提问。我添加了一些代码和经验我主要负责SystemC模型,因此我对java套接字的了解非常有限。我非常感谢任何提示甚至猜测。
floatStringStream << "x=" << x;
floatStringStream << " y=" << y;
floatStringStream << " th=" << th;
........

char * buf = (char*) malloc((strlength+1)*sizeof(char));
strcpy(buf,str.c_str());

// send string to java
if (!sndPacket((char) 3,buf,strlength)){    
    SOCKERR("failed to send render request")
    return 0;
}

// cleanup
free(buf);

// receive answer
int len = rcvPacket();