1

再会,

所以我有一个连接到 zkteco 考勤单元的 ac# 项目(k30 是设备名称)

有时在尝试连接时随机出现从 sdk 代码返回的错误 -10054

这是我用来连接的代码

 bIsConnected = BMDevice.Connect_Net(ipAddress, 4370);

这是用于返回错误的代码

 BMDevice.GetLastError(ref ErrorCode);

我似乎无法复制该错误,并且在提供的文档中没有编号为 -10054 的错误代码。我可以 ping 设备并 telnet 到分配有端口号的 ip,我也可以使用设备本身。

为了克服这个问题,我必须手动重启设备,然后我才能毫无问题地连接。

尝试询问 zkteco 的人,但我与之交谈的人没有多大帮助

4

1 回答 1

0

ZKTeco的文档没有解释-10054是什么意思,但是可以推断这个错误是WSAECONNRESETsocket错误。

来自MSDN

对等方重置连接。现有连接被远程主机强行关闭。如果远程主机上的对等应用程序突然停止,主机重新启动,主机或远程网络接口被禁用,或者远程主机使用硬关闭,这通常会导致(有关远程主机上 SO_LINGER 选项的更多信息,请参阅 setsockopt插座)。如果在一个或多个操作正在进行时,由于保活活动检测到故障而导致连接中断,则也可能导致此错误。正在进行的操作因 WSAENETRESET 而失败。后续操作因 WSAECONNRESET 而失败。

根据我的经验,-10054 错误主要发生在网络中有两个具有相同 IP 地址的 ZKTeco 设备时。这就是您必须手动重新启动设备的原因。

于 2021-06-02T00:26:15.627 回答