我想使用twisted回调和TUN接口,这个接口是我在Windows中用Python打开的。我正在使用win32获取PyHandle文件.CreateFile(). 为了使用Twisted,我(想我)必须使用一个文件描述符。所以我试着通过这样做来转换为fd:
self.tunfd = msvcrt.open_osfhandle(self.tun_handle, 0)
使用零作为第二个参数是我在web上看到的许多故障排除示例中所显示的,并且尝试使用适用的标志并没有解决这个问题。在每种情况下,我都会得到以下错误:
^{pr2}$为什么这行不通?有没有更简单的方法来使用Twisted with PyHandle?在
Windows上的文件描述符是一个技巧。我不知道是否有某种方法可以为Windows上的TUN设备获取一个文件描述符,但是即使你设法得到了一个文件描述符,Twisted也无法使用。在Windows上,Twisted仅限于与表示套接字的文件描述符交互。这与接受文件描述符的windowsapi的工作方式有关。在
你有两个选择。您可以使用^{} 监视一个窗口} 直接监视句柄中的有趣活动(不幸的是,
Event
,然后在tun_handle
发生有趣的事情时使用其他一些Windows API来触发事件。或者,您可以使用^{IOCPReactor
API并没有得到很好的记录,但我认为registerHandle
可能是最主要的)。在相关问题 更多 >
编程相关推荐