Warm tip: This article is reproduced from serverfault.com, please click

python-关闭在dll中创建的套接字

(python - Closing a socket created in a dll)

发布于 2020-12-10 07:25:45

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

s = modbus_tcp_listen(ctx, 1);

在该示例的末尾,它有一条闭合的行,就是这样的套接字

close(s);

close()不是libmodbus.dll的一部分。是从图书馆来的#include <unistd.h>有没有一种方法可以关闭套接字而不必获取具有该close()功能的dll 如果没有,我将如何close()在Windows平台上访问该命令?据我所知unistd.h是posix。

Questioner
tyleax
Viewed
0
tyleax 2020-12-13 15:49:48

你可以使用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