Java SocketException:errno=0x44

Java SocketException:errno=0x44,java,sockets,vxworks,Java,Sockets,Vxworks,当尝试在vxWorks系统上运行的VM中创建连接套接字时,我会间歇性抛出一个非常奇怪的SocketException。我无法找出导致异常发生的原因。在不改变任何外部因素的情况下,成功的连接似乎是随机的 下面是堆栈跟踪的顶部(从这里进入java.net): 其中addr是一个java.net.SocketAddress 有人能提供一些关于什么是errno 0x44的见解吗?vxWorks与Unix系统的errno代码编号不同 在vxWorks中,错误号0x44(68)是EINPROGRESS EI

当尝试在vxWorks系统上运行的VM中创建连接套接字时,我会间歇性抛出一个非常奇怪的SocketException。我无法找出导致异常发生的原因。在不改变任何外部因素的情况下,成功的连接似乎是随机的

下面是堆栈跟踪的顶部(从这里进入java.net):

其中
addr
是一个java.net.SocketAddress


有人能提供一些关于什么是errno 0x44的见解吗?

vxWorks与Unix系统的errno代码编号不同

在vxWorks中,错误号0x44(68)是EINPROGRESS

EINPROGRESS可通过以下例程设置: aio_read(),aio_return(),aio_write()

EINPROGRESS通常不是错误。对于异步IO,它只是指示某些事情已启动,但尚未完成

也许Java错误地将68翻译为EADV

尝试使用:

socket.connect(addr);
而不是

socket.connect(addr, CONNECT_TIMEOUT);

也许这就足够避免AIO和EINPROGRESS了。

Wicked,为信息干杯。当我更改为连接(SocketAddress)时,它现在抛出一个错误号为0x3c的NOROUTETOHOSTEException。@Kim Burgess:好的,“没有到主机的路由”可能有几个原因:错误的目标IP,接口的网络掩码错误…这是一个奇怪的部分,因为它在尝试套接字连接之前直接从主机名成功解析
addr
。运行此套接字的设备也可以ping套接字连接到的设备。此外,同一设备上的多个实例化将与共享子网的外部设备进行一些成功的连接和一些不成功的连接。
socket.connect(addr);
socket.connect(addr, CONNECT_TIMEOUT);