gpt4 book ai didi

java - 套接字异常 : errno = 0x44

转载 作者:行者123 更新时间:2023-11-30 11:44:44 24 4
gpt4 key购买 nike

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

这是堆栈跟踪的顶部(从它进入 java.net 的地方):

(0000069317) java.net.SocketException: errno2: 68, error: errno = 0x44 for fd: 38(0000069323)    at java.net.PlainSocketImpl.socketConnect(Native Method)(0000069326)    at java.net.PlainSocketImpl.doConnect(Unknown Source)(0000069329)    at java.net.PlainSocketImpl.connectToAddress(Unknown Source)(0000069366)    at java.net.PlainSocketImpl.connect(Unknown Source)(0000069372)    at java.net.Socket.connect(Unknown Source)

The block throwing the exception is as below:

socket = new Socket();
socket.connect(addr, CONNECT_TIMEOUT);

其中 addr 是一个 java.net.SocketAddress。

任何人都可以深入了解 errno 0x44 是什么吗?

最佳答案

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

在 vxWorks 中,errno 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。

关于java - 套接字异常 : errno = 0x44,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10645851/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com