关闭在 dll 中创建的套接字

Closing a socket created in a dll

我正在 Windows OS 上使用 python 中的 libmodbus.dll 创建一个 modbus 从站。我使用 ctypes 加载 dll 并利用其功能。我正在模仿一个示例代码 here。 dll 中的一个调用最终打开了一个套接字

s = modbus_tcp_listen(ctx, 1);

在示例的末尾,它有一行关闭套接字,就像这样

close(s);

close() 不属于 libmodbus.dll。它来自图书馆 #include <unistd.h>。有没有办法关闭套接字而不必获取具有 close() 功能的 dll?如果没有,我将如何在 windows 平台上获得对 close() 命令的访问权限?据我所知 unistd.h 是 posix.

您可以使用 socket.close(fd) 获取套接字描述符并将其关闭。

import socket
...
server_socket = mbpi.modbus_tcp_listen(self._ctx, 1)
...
socket.close(server_socket.value) # Need to call attribute value since its a ctypes.c_int